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

时间:2015-10-08 12:49:41

标签: linux bash timestamp diff

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

<timestamp><rest of line>

使用此时间戳格式:

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

我需要以模块化时间戳来区分两个文件,即我需要比较两个文件的行而没有它们的时间戳。我应该使用哪些linux工具?

我正在运行bash的RedHat 6机器上,如果它有所作为

5 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

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

然后使用diff命令。

答案 2 :(得分:1)

您可以使用&#39; cut&#39;

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

diff file1 file2

答案 3 :(得分:0)

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

awk '{$1=$2=""; print $0}' file1 > newfile1

awk '{$1=$2=""; print $0}' file2 > newfile2

diff newfile1 newfile2

答案 4 :(得分:0)

嗯,因为你正在寻找一个工具,为什么不只是使用Kompare。它非常强大且众所周知,大多数使用Linux的开发人员都使用它。

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

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