2つの.csvファイルを比較し、違いを3番目のファイルに書き込みます。

2つの.csvファイルを比較し、違いを3番目のファイルに書き込みます。

2つの.csvファイルtest_case_list.csvとtest_case_summary.csvがあり、2つのファイルの違いがある3番目のファイルを作成しようとしています。

test_case_list.csv良い:

cli-verify-cvlan-rewrite    ./vlan/vlan_rewrite_review.xls
cli-verify-cvlan-rewrite-lag    ./vlan/vlan_rewrite_review.xls
cli-verify-aggregation-general  ./link-aggr/aggregation.xls

test_case_summary.csv良い:

*   cli-verify-aggregation-general  ./link-aggr/aggregation.xls
*   cli-verify-cvlan-rewrite    ./vlan/vlan_rewrite_review.xls

出力:別の.xlsまたは.csvファイル

cli-verify-cvlan-rewrite-lag    ./vlan/vlan_rewrite_review.xls

ベストアンサー1

使用grepsed:

grep -v -F -f <(sed 's/^[*[:space:]]*//' test_case_summary.csv) test_case_list.csv > diff.csv

このsedコマンドはすべての先行*文字と空白文字を削除し、この出力はパターンファイルを指定するオプションへの入力test_case_summary.csvとして使用されます。grep-f

-Fパターンを正規表現ではなく固定文字列として解釈し、-v一致しない行、つまりtest_case_list.csv内部行を選択するオプションいいえパターンファイルに提供されます。これにより、出力がファイルにリダイレクトされますdiff.csv

また、行全体のみを一致させるためのgrepオプションを追加できます。-x

おすすめ記事