Unix 在比较两条相似的线时,如何找出差异
我有一个日志文件,其中包含以下日志语句 e、 gUnix 在比较两条相似的线时,如何找出差异,unix,grep,Unix,Grep,我有一个日志文件,其中包含以下日志语句 e、 g 启动事务id之前= 启动事务id= .... 启动事务id之前= 启动事务id= 当我为“Before”做一个简单的grep时,我看到400条语句,但是 当我为“After”做一个简单的grep时,我看到402条语句 如何找到这些不成对出现的语句。提取ID前的和ID后的,然后将它们区分开来,如下所示: $ diff -wb <(grep Before file | cut -d= -f2 | sort) <(grep After f
启动事务id之前=
启动事务id=
....
启动事务id之前=
启动事务id=
当我为“Before”做一个简单的grep时,我看到400条语句,但是
当我为“After”做一个简单的grep时,我看到402条语句
如何找到这些不成对出现的语句。提取ID前的
和ID后的,然后将它们区分开来,如下所示:
$ diff -wb <(grep Before file | cut -d= -f2 | sort) <(grep After file | cut -d= -f2 | sort)
提取ID之前的和之后的,然后将它们区分开来,如下所示:
$ diff -wb <(grep Before file | cut -d= -f2 | sort) <(grep After file | cut -d= -f2 | sort)
如果前后配对,则应具有相同的唯一编号
:
awk -F= '{a[$2]++;}END{for(i in a)if(a[i]!=2)print "id:"i}' file
将打印那些未配对的ID
e、 g:
如果前后配对,则应具有相同的唯一编号
:
awk -F= '{a[$2]++;}END{for(i in a)if(a[i]!=2)print "id:"i}' file
将打印那些未配对的ID
e、 g:
grep
也不是这个工作的最佳选择,因为它不能读取多行。您可以使用-B1成对地阅读它们,但仍然需要使用更强大的工具(如sed
、awk
或其他工具)来解析它们
这里还有另一种方法,它也适用于在行前获得额外功能的情况(echo的echo
就在那里,这样你就可以干运行它):
它的工作原理是只检查唯一的ID。因为我不知道你在那里得到了什么样的内容,也许它们是现有条目的副本,在这种情况下,你必须以不同的方式来做。以下是更安全的方法,它捕获两种情况并返回ID频率大于或小于2的事件:
$ echo 'Before starting transaction id = 123
After starting transaction id = 123
After starting transaction id = 567
Before starting transaction id = 567
After starting transaction id = 567' |
sort -k6 | uniq -c -f5 | grep -v "^[[:space:]]*2[[:space:]]"
3 After starting transaction id = 567
grep
也不是这个工作的最佳选择,因为它不能读取多行。您可以使用-B1成对地阅读它们,但仍然需要使用更强大的工具(如sed
、awk
或其他工具)来解析它们
这里还有另一种方法,它也适用于在行前获得额外功能的情况(echo的echo
就在那里,这样你就可以干运行它):
它的工作原理是只检查唯一的ID。因为我不知道你在那里得到了什么样的内容,也许它们是现有条目的副本,在这种情况下,你必须以不同的方式来做。以下是更安全的方法,它捕获两种情况并返回ID频率大于或小于2的事件:
$ echo 'Before starting transaction id = 123
After starting transaction id = 123
After starting transaction id = 567
Before starting transaction id = 567
After starting transaction id = 567' |
sort -k6 | uniq -c -f5 | grep -v "^[[:space:]]*2[[:space:]]"
3 After starting transaction id = 567
diff“`cat file | grep在`` cat file | grep在``之前”
?现在还没到狂欢节的时候,所以我无法测试它。下线总是前一行吗?如果它们是成对的,diff“`cat file | grep在`` cat file | grep在``之前”
?现在还没到狂欢节的时候,所以我无法测试它。下线总是前一行吗?如果他们是成对的
$ echo 'Before starting transaction id = 123
After starting transaction id = 123
After starting transaction id = 567
Before starting transaction id = 567
After starting transaction id = 567' |
sort -k6 | uniq -c -f5 | grep -v "^[[:space:]]*2[[:space:]]"
3 After starting transaction id = 567