[英]Awk comparison on files
我有2個文件:
文件 1:
1,apple
2,mango
3,banana
44,orange
文件2:
1,apple
22,
31,xyz
2,man
3,banana
44,oran
44,orange
我需要使用第 1 列和檢查第 2 列找出這兩個文件的差異。我不想使用 $0 來打印第 1 個文件中第 2 個文件中不存在的行。
結果輸出應在 file3 中打印為:
2,mango,man
截至目前,在其他問題中,我問並得到了以下答案:-
{ awk 'BEGIN{FS=OFS=","}($1 in a) && a[$1]!=$2{print $1,a[$1],$2}{a[$1]=$2}' file1 file2 >> file3 }
此解決方案的問題在於,由於文件 2(第 1 列)中存在重復項,因此在文件 3 中打印錯誤條目。
我需要在文件 4 中寫入這些重復項,不應反映在文件 3 中。
用於根據文件 2 中的唯一記錄連接文件
join -t',' <(sort -t',' -k1 file1) <(sort -t',' -n -k1 -u file2) | awk -F',' '{if($2!=$3) print}'
用於在 file2 中查找重復條目
awk -F',' 'seen[$1]++
演示:
$man uniq
$cat fil*
1,apple
2,mango
3,banana
44,orange
1,apple
22,
31,xyz
2,man
3,banana
44,oran
44,orange
$join -t',' <(sort -t',' -k1 file1) <(sort -t',' -n -k1 -u file2) | awk -F',' '{if($2!=$3) print}'
2,mango ,man
44,orange,oran
$
$awk -F',' 'seen[$1]++' file2
44,orange
$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.