【发布时间】:2022-10-17 05:42:34
【问题描述】:
我正在编写一个 bash 脚本来逐行比较两个相似的文本文件并找到文件的每一行之间的最终差异,我应该指出差异并告诉差异在哪一行,但我应该忽略数值在这个比较中。
例子:
Process is running; process found : 12603 process is listening on port 1200
Process is running; process found : 43023 process is listening on port 1200
在上面的示例中,脚本不应该发现任何差异,因为它只是进程 ID,并且它一直在变化。
但除此之外,我希望它通知我行之间的差异。
例子:
Process is running; process found : 12603 process is listening on port 1200
Process is not running; process found : 43023 process is not listening on port 1200
我已经有一个工作脚本来查找差异,并且我使用以下函数来查找差异并忽略数值,但它不能完美地工作,有什么建议吗?
COMPARE_FILES()
{
awk 'NR==FNR{a[FNR]=$0;next}$0!~a[FNR]{print $0}' $1 $2
}
其中$1 和$2 是要比较的两个文件。
【问题讨论】:
-
如果一行包含
foo77bar baz而另一行包含foo78bar baz,假设的结果是什么?它们被认为是相同的还是不同的? -
它工作不完美: 这意味着它几乎可以工作了。因此,您应该发布一个具体案例,其中您的算法产生的结果与您的预期不同。