我想awk
用来解析一个文件,并添加一行,当且仅当该行不存在时。
我的文件:
cccc
dddd
aaaa
mmm
Run Code Online (Sandbox Code Playgroud)
示例 1:我正在寻找“ aaaa ”
“aaaa”存在所以,没有任何反应,输出文件将是相同的。
示例 2:我正在寻找“ bbbb ”
“bbbb”不存在。我的输出文件应该是:
cccc
dddd
aaaa
mmm
bbbb
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到这个结果?
$ awk -v x='aaaa' '$0 == x {found=1} END {if(!found) print x} 1' file
cccc
dddd
aaaa
mmm
$ awk -v x='bbbb' '$0 == x {found=1} END {if(!found) print x} 1' file
cccc
dddd
aaaa
mmm
bbbb
Run Code Online (Sandbox Code Playgroud)
如果你想一次处理这个
line=aaaa
grep -Fx -q "$line" file || echo "$line" >> file
Run Code Online (Sandbox Code Playgroud)
如果你预先知道所有的可能性,那么这可能更有效:
$ cat lines_to_add
aaaa
bbbb
$ grep -Fx -f file -v lines_to_add >> file
$ cat file
cccc
dddd
aaaa
mmm
bbbb
Run Code Online (Sandbox Code Playgroud)