나는 내 작업을 사용 egrep
하거나 완료하는 방법을 찾고 있습니다.grep
각 인터페이스의 마지막 줄을 표시하고 싶습니다. grep
and with 옵션을 사용해 보았 egrep
으나 결과가 예상한 것과 달랐습니다.
#ifconfig -a
en0: flags=1e080863,480<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT,CHECKSUM_OFFLOAD(ACTIVE),CHAIN>
inet 10.x.x.x netmask 0xffffff80 broadcast 10.x.x.x
tcp_sendspace 16384 tcp_recvspace 16384 rfc1323 0
en1: flags=1e080863,480<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT,CHECKSUM_OFFLOAD(ACTIVE),CHAIN>
inet 10.x.x.x netmask 0xfffffff0 broadcast 10.x.x.x
tcp_sendspace 262144 tcp_recvspace 262144 rfc1323 1
en2: flags=1e080863,480<UP,BROADCAST,10.x.x.xmask 0xffffff80 broadcast 10.x.x.x
tcp_sendspace 262144 tcp_recvspace 262144 rfc1323 1
lo0: flags=e08084b,c0<UP,BROADCAST,LOOPBACK,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT,LARGESEND,CHAIN>
inet 127.0.0.1 netmask 0xff000000 broadcast 10.x.x.x
inet6 ::1%1/0
tcp_sendspace 131072 tcp_recvspace 131072 rfc1323 1
예상 출력:
en0: tcp_sendspace 16384 tcp_recvspace 16384 rfc1323 0
en1: tcp_sendspace 262144 tcp_recvspace 262144 rfc1323 1
en2: tcp_sendspace 262144 tcp_recvspace 262144 rfc1323 1
lo0: tcp_sendspace 131072 tcp_recvspace 131072 rfc1323 1
답변1
고쳐 쓰다: AIX 7 서버에서 테스트되었으며 AIX 요구 사항에 따라 명령이 업데이트되었습니다.
매뉴얼에서grep:
grep, egrep, fgrep - print lines matching a pattern
따라서 도구는 특정 패턴과 일치하는 라인을 찾아서 인쇄하는 것입니다. 그러나 당신의 임무는 특정 줄을 찾아서 인쇄하는 것이 아니라 출력을 사용자 정의하는 것입니다.
가능한 해결책 중 하나는 다음을 사용하는 것입니다.grep원하지 않는 행을 제외하고 사용하십시오.sed요청에 따라 출력의 필수 부분 형식을 지정합니다.
ifconfig -a |grep -Ev '^[[:space:]]*inet'|sed -e :a -e '$!N;s/:.*\n/: /g;s/[[:space:]][[:space:]]*/ /g'
산출:
en0: tcp_sendspace 16384 tcp_recvspace 16384 rfc1323 0
en1: tcp_sendspace 262144 tcp_recvspace 262144 rfc1323 1
en2: tcp_sendspace 262144 tcp_recvspace 262144 rfc1323 1
lo0: tcp_sendspace 131072 tcp_recvspace 131072 rfc1323 1
awk(설명에 제안된 대로)나 다른 도구 또는 도구 조합을 사용할 수도 있습니다.
답변2
그리고 awk
:
ifconfig -a | awk '
/^[^[:space:]]/ {iface = $1; next}
$1 == "tcp_sendspace" {$1 = $1; print iface, $0}'