IPアドレスを含む複数の部分文字列の印刷

IPアドレスを含む複数の部分文字列の印刷

さようなら行ってください!

ゴミがたくさん表示される巨大な入力ファイルがあり、いくつかの部分文字列をエクスポートしたいと思います。問題は、時には追加情報がファイルに挿入され、文字列にジャンプしたいデータが発生することです。唯一の利点は、IPアドレスが常に最初に出てくることです。 grep、sed、awkを使ってこれを行う方法はありますか?

**Input file:**
Garbage ABC=10.100.100.100 Trash Unwanted DEF=1020 Crap
NotNeeded Disgard ABC=192.168.0.1 DEF=91 Garbage Trash
ABC=10.110.110.110 Garbage Trash NA Remove DEF=441
Garbage Crap Discard NotNeeded Trash
Unwanted Trash ABC=192.168.1.1 Unwanted DEF=12000 Nothing

**Desired output:**
ABC=10.100.100.100 DEF=1020
ABC=192.168.0.1 DEF=91
ABC=10.110.110.110 DEF=441
ABC=ABC=192.168.1.1 DEF=12000

助けてくれてありがとう。

答え1

GNUを使用すると、正規表現をawk使用して一致させるフィールドを定義できます。FPAT

awk -v FPAT='[A-Z]+=[0-9.]+' '
  { for (i=1;i<=NF;i++) printf "%s", $i (i==NF ? ORS : OFS) }
' file
  • [A-Z]+AZ内の1つ以上の文字と一致
  • =テキストマッチ=
  • [0-9.]+1つ以上の数字と点を一致させる

その後、一致するフィールドを繰り返し、OFSスペース文字()を区切り文字として使用して各フィールドを印刷します。最後のフィールドのみがNF改行文字()で区切られますORS

出力:

ABC=10.100.100.100 DEF=1020
ABC=192.168.0.1 DEF=91
ABC=10.110.110.110 DEF=441
ABC=192.168.1.1 DEF=12000

関連情報