Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用awk从一个csv中删除行,其中一列中的某些值与另一个csv列匹配?_Csv_Awk - Fatal编程技术网

如何使用awk从一个csv中删除行,其中一列中的某些值与另一个csv列匹配?

如何使用awk从一个csv中删除行,其中一列中的某些值与另一个csv列匹配?,csv,awk,Csv,Awk,我一直在尝试从csv中删除行(记录),其中特定列中的条目与另一个csv中的条目匹配 csv结构大致如下所示: 1.csv 2.csv 如您所见,在col5 of 1.csv中有一些值出现在col1 of 2.csv中 我想使用awk从1.csv中删除与2.csv的col1匹配的行(记录) 因此,输出将如下所示: 3.csv 以下是我使用的awk脚本: awk -F"," 'NR==FNR{array1[FNR]=$1};NR>FNR{array1[FNR]!~$5}' 2.csv 1.cs

我一直在尝试从csv中删除行(记录),其中特定列中的条目与另一个csv中的条目匹配

csv结构大致如下所示:

1.csv

2.csv

如您所见,在col5 of 1.csv中有一些值出现在col1 of 2.csv中 我想使用awk从1.csv中删除与2.csv的col1匹配的行(记录)

因此,输出将如下所示:

3.csv

以下是我使用的awk脚本:

awk -F"," 'NR==FNR{array1[FNR]=$1};NR>FNR{array1[FNR]!~$5}' 2.csv 1.csv > 3.csv

它不起作用。

这会起作用:

$ awk -F, 'NR==FNR{a[$1];next}!($5 in a)' 2.csv 1.csv
Col1,Col2,Col3,Col4,Col5
efvr,4565,fhjs,dihi,9999

$ awk -F, 'NR==FNR{a[$1];next}!($5 in a)' 2.csv 1.csv > 3.csv

这将实现以下目的:

$ awk -F, 'NR==FNR{a[$1];next}!($5 in a)' 2.csv 1.csv
Col1,Col2,Col3,Col4,Col5
efvr,4565,fhjs,dihi,9999

$ awk -F, 'NR==FNR{a[$1];next}!($5 in a)' 2.csv 1.csv > 3.csv

我不知道你为什么认为完全更改输入文件会有帮助。当问问题时,只发布代表性输入。哦,我会继续处理。我不确定你为什么认为完全更改输入文件会有帮助。当问一个问题时,只发布代表性的输入。哦,我会继续处理这个问题。除非我改变NR==FNR条件,因为它来自第二个输入文件,否则我不知道它是否会读$5。再次感谢!我弄不清楚它是否会读$5,除非我改变NR==FNR条件,因为它来自第二个输入文件。再次感谢!
awk -F"," 'NR==FNR{array1[FNR]=$1};NR>FNR{array1[FNR]!~$5}' 2.csv 1.csv > 3.csv
$ awk -F, 'NR==FNR{a[$1];next}!($5 in a)' 2.csv 1.csv
Col1,Col2,Col3,Col4,Col5
efvr,4565,fhjs,dihi,9999

$ awk -F, 'NR==FNR{a[$1];next}!($5 in a)' 2.csv 1.csv > 3.csv