2つのファイルを比較し、新しいファイルの各行に対して変更された列番号の違いを取得したいと思います。

2つのファイルを比較し、新しいファイルの各行に対して変更された列番号の違いを取得したいと思います。

2つのファイルを比較し、新しいファイルの各行に対して変更された列番号の違いを取得したいと思います。両方のファイルは、ソートされたデータと同じ数の行を含む同じ構造を持ちます。

ファイルが2つありますが、

ファイル1

01|Akshaya|9657|Pune
02|Samiksha|8391|Mumbai

ファイル2

01|Akshaya|9657|Nashik
02|Samiksha|0202|Nagpur

これら2つのファイルを比較し、違いを記録する詳細を印刷したいと思います。最初の行の列が一致しないのと同じです。したがって、上記の2つのファイルを比較すると、2番目のファイルの最初の行が最初のファイルの最初の行と異なります。したがって、出力は次のようになります。

ファイル3

Sr no|Col no
01|3
02|2,3

ベストアンサー1

各ファイルの同じ行番号を並べて列を比較します。

$ paste -d"|" file_1 file_2 \
  | awk -v FS="|" 'BEGIN {print "Sr no|Col no"} \
    { printf $1"|"; \
      for(i=2;i<=4;i++) { \
       if($i!=$(i+4)) printf i-1","; \
      } \
      print "";
    }'

熱計算はawk1から始まります。あなたの例は0から始まるようです。だから出力から1を引く。

,また、各行には末尾の文字があります。必要に応じてパイプから取り外すことができますsed

| sed 's/,$//'

おすすめ記事