2014-04-11 4 views
0

MAC 주소, a4 : 1f : 72 : 6e : 2a : cf를 얻으려는 시도 (아래 참조)를 $ NewMAC 변수에 저장합니다. 이것이 발생하는 방법은 arp-scan이 텍스트 파일로 출력되도록하는 것입니다. 이것이 결과입니다.단어를 grep하는 방법 - bash?

Interface: eth2, datalink type: EN10MB (Ethernet) 
Starting arp-scan 1.8.1 with 1 hosts (http://www.nta-monitor.com/tools/arp-scan/) 

192.168.1.100 a4:1f:72:6e:2a:cf (Unknown) 

1 packets received by filter, 0 packets dropped by kernel 
Ending arp-scan 1.8.1: 1 hosts scanned in 0.143 seconds (6.99 hosts/sec). 1 responded 

답변

1
awk '/^[0-9]+[.][0-9]+[.][0-9][.][0-9]+/ {print $2}' arp-scan-output.txt 
+0

이 하나의 일! 고맙습니다! 하나의 부수적 인 말인데, MAC 주소의 문자를 대문자로 만드는 방법이 있습니까? – Vlad

+0

@ user3525621 :'{print $ 2}'를'{print toupper ($ 2)} '로 바꾸거나'| tr '[: lower :]' '[: upper :]'' – mklement0

1
grep -E ' ([[:xdigit:]]{2}:){5}[[:xdigit:]]{2} ' 

이것은 이더넷 주소를 포함하는 라인을 선택한다. GNU grep을 사용하는 경우 -o을 사용하여 일치하는 텍스트 만 선택할 수 있습니다. 공란이 중요하다면 (절대적으로 가질 수는 없습니다) 공백을 찾지 말고 더 어둡거나 \b과 같은 표준 표기법을 사용하여 단어의 시작/끝을 의미해야합니다. 따라서

: 당신이 GNU grep이없는 경우

NewMAC=$(arp-scan ... | grep -E -o '\b([[:xdigit:]]{2}:){5}[[:xdigit:]]{2}\b') 

, 당신은 출력의 두 번째 열을 인쇄 할 | awk '{print $2}'를 사용할 수 있습니다.

배경 정보를
NewMAC=$(arp-scan ... | grep -E ' ([[:xdigit:]]{2}:){5}[[:xdigit:]]{2} ' | awk '{print $2}') 
+0

1; '-o'와'\ b'는 FreeBSD (OSX)'grep'에서도 작동합니다. – mklement0

관련 문제