bash 脚本:如何在从每行中剥离前缀后区分两个文件?

bash script: how to diff two files after stripping prefix from each line?

我有两个日志文件。每行的格式如下:

<timestamp><rest of line>

使用这种时间戳格式:

2015-10-06 04:35:55.909 REST OF LINE

我需要对两个文件的时间戳取模进行比较,即我需要比较两个文件的行而不带时间戳。我应该使用哪些 linux 工具?

我在 RedHat 6 机器上 运行 bash 如果有区别的话

我会首先生成两个文件来与使用 cut 命令删除的 header 进行比较,如下所示:

cut -f 3- -d " " file_to_compare > cut_file

然后使用 diff 命令。

您可以使用'cut'

cat file1 | cut -b23- > file1cut
cat file2 | cut -b23- > file2cut

diff file1 file2

要打印除前两个字段之外的所有字段,可以使用 awk 实用程序(和编程语言):

awk '{==""; print [=10=]}' file1 > newfile1

awk '{==""; print [=10=]}' file2 > newfile2

diff newfile1 newfile2

好吧,既然您正在寻找一种工具,为什么不直接使用 Kompare。它非常强大且广为人知,大多数使用 Linux.

的开发人员都在使用它

https://www.kde.org/applications/development/kompare/ https://docs.kde.org/trunk5/en/kdesdk/kompare/using.html

Kompare 是一个 GUI 前端程序,可以查看和合并源文件之间的差异。可用于比较文件或文件夹内容的差异,支持多种差异格式,并提供多种选项来自定义显示的信息级别。

您不需要创建临时文件:使用 bash process substitution

diff <(cut -d" " -f3- log1) <(cut -d" " -f3- log2)