这是一个很好的答案。 /sf/answers/471752921/ 但我还是有点困惑。
没有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
Run Code Online (Sandbox Code Playgroud)
尝试了几种组合后,我发现我必须使用
awk '/^nameserver/ && !a { printf("nameserver 127.0.0.1\n"); a=1 } {print}' file2
但我仍然对停止重复的功能!a
感到困惑。a=1
printf("nameserver 127.0.0.1\n")
将变量命名already_inserted
为a
,这样就会变得清晰起来。然后它读起来像:
if my_pattern matches and not already_inserted { insert "some text"; already_inserted=true; }
Run Code Online (Sandbox Code Playgroud)
awk
将为每一行运行此命令。