2015-02-06 29 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標誌