私はファイルの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)
。このようにNF
1ずつ増えます。次に、文字列を2番目から最後のフィールドに割り当てます$(NF-1)
。
その後、すべての行を印刷します。
出力を新しいファイルにリダイレクトし、ファイルをその場所に移動します。
awk ...as above... file >file.new && mv file.new file