awkを使用してファイルの途中にテキスト行を追加するには?

awkを使用してファイルの途中にテキスト行を追加するには?

これは素晴らしい答えです。 https://stackoverflow.com/a/6739327/15603477 しかし、まだ少し混乱しています。

a変数がない場合は、次のようにawk '/^nameserver/ { printf("nameserver 127.0.0.1\n")} {print}' file2なります。

# Generated by NetworkManager
domain dhcp.example.com
search dhcp.example.com
nameserver 127.0.0.1
nameserver 10.0.0.1
nameserver 127.0.0.1
nameserver 10.0.0.2
nameserver 127.0.0.1
nameserver 10.0.0.3

複数の組み合わせを試してから使用する必要があることがわかりました。 awk '/^nameserver/ && !a { printf("nameserver 127.0.0.1\n"); a=1 } {print}' file2

しかし、繰り返しを停止する機能については!aまだ混乱しています。a=1printf("nameserver 127.0.0.1\n")

ベストアンサー1

変数名を明確に指定してくださいalready_insertedaこれにより、次のように読み込まれます。

if my_pattern matches and not already_inserted { insert "some text"; already_inserted=true; }

awkこのコマンドは各行に対して実行されます。

おすすめ記事