我有两个文件:
file1.txt:
boring stuff
interesting value = 123 !ts:yesterday
interesting value = 456 !ts:yesterday
boring stuff
字符串
file2.txt:
boring stuff
interesting value = 123 !ts:today
interesting value = 789 !ts:today
boring stuff
型
现在,diff -u file1.txt file2.txt
将突出显示两行interesting value
,因为!ts:
后面的文本已经改变。不是我想要的。我只想看到第二行interesting value
已经改变,而不被告知第一行保持不变,但后面有不同的注解。
所以我可以这样做:
diff -u <(sed -e 's/\!ts:.*$//' file1.txt) <(sed -e 's/\!ts:.*$//' file2.txt)
@@ -1,4 +1,4 @@
boring stuff
interesting value = 123
-interesting value = 456
+interesting value = 789
boring stuff
的字符串
太好了!
但是现在我在输出中看不到过滤掉的文本,我需要在执行过滤比较之后将过滤掉的上下文放回去,这样我就可以理解diff中更改的上下文,但是上下文本身不被认为是不匹配的。
有什么方法可以实现这一点吗?我能找到的唯一过滤器开关-I
完全删除了匹配的行。
1条答案
按热度按时间bvhaajcl1#
filterdiff.awk:
上面的代码要求
-
和+
行都出现在同一个@@
块中。这是一个可以跨块替换的变体。它可能要求“感兴趣”的数据是唯一的。
filterdiff2.awk:
型