出力から末尾のコロンを削除するためにこのsedコマンドをどのように変更しますか?

出力から末尾のコロンを削除するためにこのsedコマンドをどのように変更しますか?

Centos 7サーバーにイーサネットインターフェイスを表示する必要があります。 Centos 6.5では(他の投稿の)このコマンドを使用しましたが、6.5では正しく機能しました。

ifconfig -a | sed  -n 's/^\([^ ]\+\).*/\1/p' | grep -Fvx -e lo 

Centos 7では、インターフェイスの出力に「:」が付いています。

だから私の出力は次のようになります

ifconfig -a | sed  -n 's/^\([^ ]\+\).*/\1/p' | grep -Fvx -e lo
ens32:
lo:

"lo:" 削除 これを修正しました。結果はens32です。

ifconfig -a | sed  -n 's/^\([^ ]\+\).*/\1/p' | grep -Fvx -e lo:
ens32:

最後の「:」をどのように削除できますか?このsedを修正できますか?または他のアイデア

ベストアンサー1

残念ながら、ifconfigコマンドの生出力を提供していませんでした。しかし、私は次のことをします:

$ ifconfig -a | perl -anle 'print $F[0] if /(^\w)/'
$  enp2s0f0
   lo
   tun0
   wlp3s0b1

元の出力は次のとおりです。

enp2s0f0  Link encap:Ethernet  HWaddr 3c:07:54:5f:5e:35  
          inet addr:192.168.1.114  Bcast:192.168.1.255 
[...] 

perl -anle、ここで 'a'は列の行を分割し、変数$ Fを埋めます。 'n'は出力を1行ずつ処理し、 'l'は各印刷の間に新しい行を置き、 'e'はコマンドラインPerlコマンドを実行します。その後、正規表現に従って、「^」行の先頭に「\w」文字を含む「//」行を一致させたいと言いました。

おすすめ記事