Bash 通过比较列中的值打印CSV文件中的差异(使用awk)
假设我有两个文件-Bash 通过比较列中的值打印CSV文件中的差异(使用awk),bash,shell,awk,Bash,Shell,Awk,假设我有两个文件-file1.csv和file2.csv。我需要比较两个文件的第2列(字符串值),并打印出file2.csv中的行,以获取file1.csv的第3列中不存在的第3列值 我已尝试使用以下awk命令: awk -F'\t''NR==FNR{c[$3]++;next};c[$3] == 0' file1.csv file2.csv 然而,这只是给了我所有的file2.csv。file2.csv中只有两个额外的行不在file1.csv中 有人能告诉我我做错了什么吗 file1.csv的
file1.csv
和file2.csv
。我需要比较两个文件的第2列(字符串值),并打印出file2.csv
中的行,以获取file1.csv
的第3列中不存在的第3列值我已尝试使用以下
awk
命令:
awk -F'\t''NR==FNR{c[$3]++;next};c[$3] == 0' file1.csv file2.csv
然而,这只是给了我所有的file2.csv
。file2.csv
中只有两个额外的行不在file1.csv
中
有人能告诉我我做错了什么吗
file1.csv的片段(列从0开始编号)
file2.csv的片段
ANR 12910 CallExpression mutex_unlock ( & mmc_test_lock )
ANR 12911 Callee mutex_unlock
ANR 12912 Identifier mutex_unlock
ANR 12913 ArgumentList & mmc_test_lock
ANR 12914 Argument & mmc_test_lock
ANR 12915 UnaryOperationExpression & mmc_test_lock
ANR 12916 UnaryOperator &
ANR 12917 Identifier mmc_test_lock
ANR 12918 IfStatement if ( test -> highmem )
ANR 12919 Condition test -> highmem
ANR 12920 PtrMemberAccess test -> highmem
ANR 12921 Identifier test
ANR 12922 Identifier highmem
ANR 12923 ExpressionStatement "__free_pages ( test -> highmem , BUFFER_ORDER )"
ANR 12924 CallExpression "__free_pages ( test -> highmem , BUFFER_ORDER )"
ANR 12925 Callee __free_pages
ANR 12926 Identifier __free_pages
ANR 12927 ArgumentList test -> highmem
ANR 12928 Argument test -> highmem
ANR 12929 PtrMemberAccess test -> highmem
ANR 12930 Identifier test
ANR 12931 Identifier highmem
ANR 12932 Argument BUFFER_ORDER
ANR 12933 Identifier BUFFER_ORDER
预期产出:
ANR 12918 IfStatement if ( test -> highmem )
ANR 12919 Condition test -> highmem
您需要将awk命令更改为:
awk -F'\t' 'NR==FNR {seen[$2]; next} !($2 in seen)' file1.csv file2.csv
非常感谢你回答我的问题!但是,这也不起作用。在这种情况下,您需要发布来自2个csv文件的样本数据和预期输出。文件2中的第2列都是12…
,但在文件1中,您拥有所有26…
,因此当然没有匹配。我道歉,这里的另一位用户更正了我。我假设列从0开始编号。然而,使用c[$3]只会给我一个空白文件。我已经相应地编辑了这个问题。这很有效!非常感谢你!我真的很感激!您必须在awk中执行此操作吗?如果没有,请查看diff
。请随预期输出一起发布一些示例数据。第二列中没有一列与其他文件匹配…列从0开始编号。@AnnaR不,它们不是。
awk -F'\t' 'NR==FNR {seen[$2]; next} !($2 in seen)' file1.csv file2.csv