arpscan은 Mac 주소를 가져오고 처음 2줄과 마지막 3줄을 억제합니다.

arpscan은 Mac 주소를 가져오고 처음 2줄과 마지막 3줄을 억제합니다.

현재 다음을 사용하여 원하는 결과를 얻습니다.

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.
        }
'

관련 정보