行からパターンを削除して残りの内容を返すにはどうすればよいですか?

行からパターンを削除して残りの内容を返すにはどうすればよいですか?

これを実行すると、ip addr sho | grep 9000高速統計が必要なインターフェイスが返されます。

eth3: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9000 qdisc mq state UP qlen 1000

しかし、このgrepコマンドが次の不要な詳細なしで短い行を返すようにする方法を知りたいです。

eth3: mtu 9000 state UP

grepコマンドに特定のパラメータを適用してこれを実行できますか?

ベストアンサー1

awk解決策。 eth、数値、次を含む行を見つけて、その列を印刷します。

$ ip a s | awk '/eth[0-9]*:/{print $2,$4,$5,$8,$9}'
eth0: mtu 1460 state UP
$

sedより甘くて短い方法があることを指摘することもできますが、解決策です。

$ ip a s | sed -n 's/^.*\(eth[0-9]*:\).*\(mtu [0-9]*\).*\(state [A-Z]*\).*/\1 \2 \3/p'
eth0: mtu 1460 state UP
$

grep+cutソリューション。

$ ip a s | grep -E 'eth[0-9]+:' | cut -f2,4,5,8,9 -d" "
eth0: mtu 1460 state UP
$

おすすめ記事