2015-02-06 86 views
0

当第三个字段与模式文件中的模式不匹配时,我需要打印CSV文件中的所有行。在GNU Linux(AWK/SED/GREP)中选择CSV格式与格式文件中的任何格式不匹配

awk -F, 'FNR == NR { patterns[$0] = 1; next } patterns[$3]' FILE2 FILE1 

FILE1

dasdas,0,00567,1,lkjiou,85249 
sadsad,1,52874,0,lkjiou,00567 
asdasd,0,85249,1,lkjiou,52874 
dasdas,1,48555,0,gfdkjh,06793 
sadsad,0,98745,1,gfdkjh,45346 
asdasd,1,56321,0,gfdkjh,47832 

FILE2

00567 
98745 
45486 
54543 
48349 
96349 
56485 
19615 
56496 
39493 

输出

dasdas,0,00567,1,lkjiou,85249 
sadsad,0,98745,1,gfdkjh,45346 

如何打印:我一直在做相反的,印刷有以下脚本匹配行中不匹配模式模式文件? 非常感谢!

+0

不要使用“模式”一词,因为它非常含糊。你正在寻找匹配的数字,字符串或正则表达式吗?你在寻找完整还是部分匹配? – 2015-02-06 13:29:17

回答

1

反选:

#            v-- here 
awk -F, 'FNR == NR { patterns[$0] = 1; next } !patterns[$3]' FILE2 FILE1 
0

你只需要从以前question

grep -vf <(sed -e 's/^\|$/,/g' file2) file1 

PS反转匹配。请参阅-v标志