【发布时间】:2024-01-22 05:09:01
【问题描述】:
当第三个字段与模式文件中的模式匹配时,我需要打印 CSV 文件中的所有行。
我尝试了 grep,但没有成功,因为它匹配任何字段,而不仅仅是第三个。
grep -f FILE2 FILE1 > OUTPUT
文件1
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
文件2
00567
98745
45486
54543
48349
96349
56485
19615
56496
39493
正确的输出
dasdas,0,00567,1,lkjiou,85249
sadsad,0,98745,1,gfdkjh,45346
错误的输出
dasdas,0,00567,1,lkjiou,85249
sadsad,1,52874,0,lkjiou,00567 <---- I don't want this to appear
sadsad,0,98745,1,gfdkjh,45346
我已经到处搜索并尝试了不同的公式。
编辑:感谢 Wintermute,我设法写了这样的东西:
csvquote file1.csv > file1.csv
awk -F '"' 'FNR == NR { patterns[$0] = 1; next } patterns[$6]' file2.csv file1.csv | csvquote -u > result.csv
Csvquote 帮助使用 AWK 解析 CSV 文件。
非常感谢大家,伟大的社区!
【问题讨论】: