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)
我有两个日志文件。每行的格式如下:
<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)