説明する

説明する

テキストファイルがあります。次のようになります。

www.ac.com has address 6.1.1.146 www.ac.com is an alias for ac.com. www.ac.com is an alias for ac.com.
www.ba.net is an alias for www-bn.gs.ba.com. www-bn.gs.ba.com has address 11.28.11.4 ;; connection timed out; no servers could be reached

has address前後の列を抽出してカンマで区切りたいです。だから私は以下を取得したいと思います:

www.ac.com,6.1.1.146
www-bn.gs.ba.com,11.28.11.4

どうすればいいですか?私はこれを試しましたが、awk '{print $1,$4}' myfile > newfile私が望むものは常に列1と4にあるわけではないのでうまくいきません。興味のある列はさまざまですが、常に区別されますhas address

ベストアンサー1

使用grepsed:

grep -o '[^ ]* has address [^ ]*' | sed 's/ has address /,/'

これは簡単だから好きです。


説明する:

grep-o次のパターンが見つかった各行の一致する()部分のみを出力します。

  • 空白でない([^ ]*)文字has addressの後に空白でない([^ ]*)文字が続きます。

sedhas address単に次に置き換えられます。,

おすすめ記事