sedを使用してテキストファイルの行の途中に挿入する

sedを使用してテキストファイルの行の途中に挿入する

私はファイルの1行にテキストを追加する方法を研究しています。

だからテキストファイルの私の行は次のようになります

hosts allow = 192.168.122. 172.24.0 

IPを追加して、ラインが次のように見えるようにしたいと思います。

hosts allow = 192.168.122.  192.12.0.  172.24.0

試行錯誤を経て得たものは次のとおりです。

sed -i '/allow/ s/.*/&,192.12.0./' testfile

これは作る:

hosts allow = 192.168.122. 172.24.0. 192.12.0.

ベストアンサー1

awk行の最後の2番目のフィールドに文字列を挿入するために使用されます。

$ awk '/allow/ { $(NF+1) = $NF; $(NF-1) = "192.12.0." } { print }' file
hosts allow = 192.168.122. 192.12.0. 172.24.0

最初のブロックは、file文字列を含むすべての行で実行されますallow。まず、最後のフィールドを1$NF段階移動します$(NF+1)。このようにNF1ずつ増えます。次に、文字列を2番目から最後のフィールドに割り当てます$(NF-1)

その後、すべての行を印刷します。

出力を新しいファイルにリダイレクトし、ファイルをその場所に移動します。

awk ...as above... file >file.new && mv file.new file

おすすめ記事