awk file1 file2问题总结

awk file1 file2问题总结:

如下有两个文本

file1

aaa 111

bbb 222

ccc 333

ddd 444

file2

aaa 111

bbb 222

ccc 333

ddd 444

eee 555

要求1:合并文件file1file2并且将重复的行排除掉

awk 'NR==FNR{a[$0]=1;print $0}NR>FNR&&(!a[$0]++){print $0}' file1 file2

解释:

NR==FNR的时候,读取的是第一个文件file1a[$0]=1;print $0为把所有的数组内容全部就行输出,就输出了第一个文件中的所有的内容。当NR>FNR的时候,读取的是第二个文件,!a[$0]++的为如果这个字符串在第一个文件中没有出现过,那么a[$0]的值为0,前面取反的话为1,这时候执行后面的action,会输出。如果$0出现过,那么a[$0]的值就是1,取反的结果为0,就不会进行输出。

要求2:判断file1中有的内容而file2中没有的内容,并进行输出

awk ‘NR==FNR{a[$0]=1}NR>FNR&&(!a[$0]++){print $0}’ file1 file2

解释参照上面。

你可能感兴趣的:(awk file1 file2问题总结)