Eng*_*ng7 5 awk text-processing
考虑具有值的文件:
foo
boo
too
Run Code Online (Sandbox Code Playgroud)
还有一个:
foo,1
foo,2
boo,1
soo,1
Run Code Online (Sandbox Code Playgroud)
如何仅从第二个文件中获取第一个匹配项,其中输出为:
foo,1
boo,1
Run Code Online (Sandbox Code Playgroud)
怎么样
$ awk -F, 'NR==FNR {a[$1]; next} $1 in a {print; delete a[$1]}' file1 file2
foo,1
boo,1
Run Code Online (Sandbox Code Playgroud)
著名习语的变体。
awk -F, 'FNR==NR{a[$1]=1;next} a[$1]++==1' file1 file2
Run Code Online (Sandbox Code Playgroud)
更新
正如@dave_thompson_085 指出的那样,soo,#第二个文件中可能有多个,因此第二个文件a[$1]++==1为真。他还提供了几种修复方法:
awk -F, 'FNR==NR{a[$1]=1;next} !--a[$1]' file1 file2
Run Code Online (Sandbox Code Playgroud)