如何让 linux 'diff' 在 bash 中使用正则表达式

如何让 linux 'diff' 在 bash 中使用正则表达式

我有两个文件,expected.out 和actual.out, PID(12345) PID(01234) 分别为:。

如果只有 5 个数字不同,我希望 diff 忽略该行,因此 diff 将返回空。这个想法是让 diff 忽略具有不同 PID 但在其他方面相同的日志。

以下不起作用:

diff -I '\([0-9]{5}\)' -I '\([0-9]{5}\)' expected.out actual.out

答案1

^匹配行的开头和结尾$,并匹配字符串PID(您不希望FOO(12345)并且BAR(12345)被忽略):

diff -I '^PID([0-9]\{5\})$' expected.out actual.out

匹配一位或多位数字比假设每个 PID 有 5 位数字更安全:

diff -I '^PID([0-9]\+)$' expected.out actual.out

相关内容