Unixで列別にファイルを比較する

Unixで列別にファイルを比較する

同じ行と列の数、同じレコードの順序を持​​つ2つのファイルを比較したいと思います。列の値に違いがある場合は、これを強調したいと思います。

file A:

1,kolkata,19,ab

2,delhi,89,cd

3,bangalore,56,ef

file B:

1,kolkata,21,ab

2,mumbai,89,gh

3,bangalore,11,kl

列を1主キーとみなすと、他の列と違いがあります。私はこれらの違いを強調したいと思います。

出力形式は次のとおりです(不明)。

record_number,  columns_with_diff
1               3

2               2,4

3               3,4

私の問題をdiff解決できますか?commそれでは、正確なコマンドは何ですか?

ベストアンサー1

それはすべてです。各行の末尾に追加のカンマがある場合は、いくつかのスタイルの問題があります。

awk '
     BEGIN{ FS=","; ORS="" }

     { 
       # read line from secondary file
       getline aux < "file2"
       split(aux,f2,",")

       # print current line number
       print NR" "

       # process each field in current line
       for(i=1; i<=NF; i++) {
         if ($i!=f2[i]) {
           print i","
         }
       }
       print "\n"
     }
' file1

出力:

1 3,
2 2,4,
3 3,4,

おすすめ記事