gpt4 book ai didi

bash - 通过比较列中的值(使用 awk)打印 CSV 文件中的差异

转载 作者:行者123 更新时间:2023-11-29 09:29:31 24 4
gpt4 key购买 nike

假设我有 2 个文件 - file1.csvfile2.csv。我需要比较两个文件的第 2 列(字符串值)并打印出 file2.csv 中第 3 列的值的行,这些值不存在于 file1 的第 3 列中.csv

我试过使用以下 awk 命令:

awk -F'\t''NR==FNR{c[$3]++;next};c[$3] == 0' file1.csv file2.csv

然而,这只是给了我所有的 file2.csvfile2.csv 中只有 2 行不存在于 file1.csv 中。

谁能告诉我我做错了什么?

file1.csv 的片段(列从 0 开始编号)

ANR     26545   CallExpression                  mutex_unlock ( & mmc_test_lock )
ANR 26546 Callee mutex_unlock
ANR 26547 Identifier mutex_unlock
ANR 26548 ArgumentList & mmc_test_lock
ANR 26549 Argument & mmc_test_lock
ANR 26550 UnaryOperationExpression & mmc_test_lock
ANR 26551 UnaryOperator &
ANR 26552 Identifier mmc_test_lock
ANR 26553 ExpressionStatement "__free_pages ( test -> highmem , BUFFER_ORDER )"
ANR 26554 CallExpression "__free_pages ( test -> highmem , BUFFER_ORDER )"
ANR 26555 Callee __free_pages
ANR 26556 Identifier __free_pages
ANR 26557 ArgumentList test -> highmem
ANR 26558 Argument test -> highmem
ANR 26559 PtrMemberAccess test -> highmem
ANR 26560 Identifier test
ANR 26561 Identifier highmem
ANR 26562 Argument BUFFER_ORDER
ANR 26563 Identifier BUFFER_ORDER

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

关于bash - 通过比较列中的值(使用 awk)打印 CSV 文件中的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43987883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com