[英]Print differences in CSV files by comparing values in column (using awk)
假設我有2個文件 - file1.csv
和file2.csv
。 我需要比較兩個文件的第2列(字符串值)並打印出file2.csv
的行,以file2.csv
第3列中不存在的第3列的file1.csv
。
我嘗試過使用以下awk
命令:
awk -F'\t''NR==FNR{c[$3]++;next};c[$3] == 0' file1.csv file2.csv
然而, file2.csv
給了我所有的file2.csv
。 file2.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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.