主な部分は似ていますが、混乱している2つのファイルを比較する方法を提案してください。例:
A file
持つ
72444 55555
72445 55666
55666 72446
B File
持つ
72444 55555
55666 72446
72445 55666
xxxxx yyyyy
そのため、出力ファイルファイルとエラーが発生したファイル名の違いを取得したいと思います。上記の残りの部分が同じであれば、おそらく次のようになります。
B File xxxxx yyyyy
ベストアンサー1
このcomm
ユーティリティは、2つのファイルのいずれかに固有であるか、または両方のファイルに共通の行を抽出できます。このユーティリティを使用するには両方のファイルを並べ替える必要があるため、「複雑な行」の問題が解決されます。
ユーティリティcomm
のデフォルト出力は、タブで区切られた3つの列で構成されています。
- 最初のファイルでのみ行が見つかります。
- 2番目のファイルでのみ行が見つかります。
- 両方のファイルで行が見つかりました。
列を有効-1
または無効にできます。-2
-3
ここでは、2つのプロセス置換を使用してソートされた入力データを生成し、2つのファイルに固有のデータであるcomm
最初の2つの列のみを表示するように要求します。
$ comm -3 <(sort fileA) <(sort fileB)
xxxxx yyyyy
$ comm -3 <(sort fileA) <(sort fileB) | cut -f 2-
xxxxx yyyyy
見てわかるように、2番目の列は何かを含む唯一の列なので、この行はxxxxx yyyyy
のみに表示されfileB
、他のすべての行は2つのファイルに共通であると結論付けることができます。
それ以外の場合は、3-3
番目の列でも共通点を確認できます。
$ comm <(sort fileA) <(sort fileB)
55666 72446
72444 55555
72445 55666
xxxxx yyyyy