私は私の仕事を使用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
したがって、ツールは特定のパターンに一致する行を見つけて印刷することです。しかし、あなたの使命は、特定の行を見つけて印刷するのではなく、出力をカスタマイズすることです。
考えられる解決策の1つは、次のものを使用することです。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}'