현재 다음을 사용하여 원하는 결과를 얻습니다.
arp-scan -I eno1 -l | cut -f2-3 | tr [':lower:'] [':upper:'] | sed 1,2d | head -n -3
나는 너무 많은 프로세스를 생성했고 그것은 단지 나쁜 형태라는 말을 들었습니다. 그러나 그것은 "좋은 형태"가 무엇인지 말해주지 않습니다.
가까이 다가갈 수는 있지만 arp-scan -I eno1 -l | awk '{ print $2 $3 }'
여전히 처음 두 행과 마지막 세 행이 표시됩니다. 더 적은 수의 파이프를 사용하여 하려는 작업을 달성할 수 있는 방법이 있습니까? 완벽한 세상에서는 다음 목록을 얻습니다.
XX:XX:XX:XX:XX:XX (<MANUFACTURER>)
MAC 주소와 제조업체 사이의 간격은 탭 문자입니다. 또한 홈 네트워크에 있는 장치의 사용자를 확인하기 위해 파일과 비교하기 때문에 대문자 MAC 주소를 반환해야 합니다.
답변1
시도해 보세요(테스트되지 않음)
arp-scan -I eno1 -l | awk '{$0 = toupper ($0); CIRCBUF[NR%5] = $2 "\t" $3} NR > 5 {print CIRCBUF[(NR-3)%5]}'
편집: 댓글 awk
섹션
awk '
{$0 = toupper ($0) # convert each line to uppercase
CIRCBUF[NR%5] = $2 "\t" $3 # fill circular buffer with fields 2 & 3
# buffer index cycles every 5 lines
}
NR > 5 {print CIRCBUF[(NR-3)%5] # start printing at line 3 (6 - 3) and
# stop 3 lines before end.
}
'