我试图打印两个文件中一些不匹配的字符串,其中第一个文件中有一些用空格分隔的整数值的字符串,第二个文件中也有一些字符串值,这些值与第一个文件的一些字符串值相匹配,但前面没有指定任何整数。
使用下面的awk
和diff
命令,当与第二个文件相比时,我试图获得第一个文件的不匹配数据。
当使用awk
时,它将生成第一个文件的内容,基本上它将打印传递给awk
命令的最后一个参数的内容。
awk -F, 'FNR==NR {a[$1];next} !($0 in a)' f2 f1
当使用diff
时,它将生成第二个文件的内容,这里它将打印传递的第一个参数的内容。
diff --changed-group-format='%<' --unchanged-group-format='' f2 f1
f1
papaya 10
apple 23
Moosumbi 44
mango 32
jackfruit 15
kiwi 60
orange 11
strawberry 67
banana 99
grapes 21
dates 6
f2
apple
mango
kiwi
strawberry
预期结果
papaya 10
Moosumbi 44
jackfruit 15
orange 11
banana 99
grapes 21
dates 6
这是awk中非常常见的操作:将f2中的值读取到数组中,然后在处理f1时,只打印f2数组中不存在第一个字段的行:
awk 'NR == FNR {f2[$1]; next} !($1 in f2)' f2 f1
我还打算建议@shellter使用grep
命令,但他击败了我(不过你应该添加-w
选项,以匹配整个单词(。