テキストファイルがあります。次のようになります。
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
使用grep
とsed
:
grep -o '[^ ]* has address [^ ]*' | sed 's/ has address /,/'
これは簡単だから好きです。
説明する:
grep
-o
次のパターンが見つかった各行の一致する()部分のみを出力します。
- 空白でない(
[^ ]*
)文字has address
の後に空白でない([^ ]*
)文字が続きます。
sed
has address
単に次に置き換えられます。,