我有两个 .csv 文件 test_case_list.csv 和 test_case_summary.csv,我想生成第三个文件,该文件将具有两个文件的差异。
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
使用grep
和sed
:
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
's-x
选项以仅匹配整行。