我不知道是否可以将文本文件的内容与第二个文件夹中的其他文件进行比较。我需要程序仅搜索匹配的字符串,如果找到,则显示包含匹配字符串的文件的两行。
我已尝试使用 diff 但没有得到我期望的结果。
我正在寻找的一个例子是:
假设我有两个文件夹,每个文件夹内都有我想要比较的文本文件。
文件夹1/测试.txt:
示例 1 - A 例子A-A 示例 2-B 例子B-C 示例 3-C 例子C-D
文件夹2/测试不同名称.txt:
例子A-A 示例 3 - B 例子B-C 例子C-D 示例 1 - E
结果应该是比较文件的匹配字符串:
我添加了这部分,因为格式不适合注释。如果这是不是想要的结果,请从问题中删除它!CharlesGreen
|==========================|
|String |File 1 |File 2 |
|--------------------------|
|example1 |A |E |
|example3 |C |B |
|==========================|
请注意,仅打印匹配的文本,当整行不匹配时,差异会打印在屏幕上。
答案1
您可以awk
这样做:
awk -F'-' 'NR == FNR { hold[$1]= $2; next } $2 != hold[$1] { print $1, hold[$1], $2 }' file1 file2
example3 C B
example1 A E
我们将 file1 读入一个awk
关联数组,hold
该数组以键作为第一列,以第二列为值,其中列由连字符分隔,我们用awk
's-F'-'
选项指定直到ecordsN
的数量R
等于F
ileN
数量R
- 这仅对第一个输入文件(这里是 file1)始终成立。
然后根据我们在数组中保存的第一列相同的键检查文件 2 的第二列,如果第二列不同,那么我们将打印出来。