gpt4 book ai didi

linux - comm 在具有相同元素的两个日志文件之间不匹配

转载 作者:太空宇宙 更新时间:2023-11-04 10:11:27 25 4
gpt4 key购买 nike

我正在尝试使用 comm 命令比较两个日志,以查看哪些应用程序已安装但未删除。以下是文件示例:

已安装:

2009-03-21 11:43:21 install flex-old:amd54 <none> 3.7.4a-10ubuntu1
2009-03-22 22:55:08 install libubsan0:amd54 <none> 6.3.0-1ubuntu1~14.04

已删除:

2009-03-24 19:53:49 remove libubsan0:amd54 <none> 6.3.0-1ubuntu1~14.04

因此,需要找到不同的那一行是“flex-old”行。这是我尝试过的方法,还有一些其他变体:

comm -23 <(sort install.txt) <(sort removed.txt) > difference.txt

这会输出所有已安装的列表,而不仅仅是那些与删除列表不相同的列表。我也试过:

comm -3 <(sort install.txt | uniq) <(sort removed.txt | uniq) > what.txt

但是,这会输出两者的所有应用程序,但直接在安装下删除。任何帮助表示赞赏:)

最佳答案

您需要过滤您的内容以仅提供 实际上可能与 comm 相同的部分。

  • 所示示例输入的两个文件的时间戳(第一列和第二列)从不相同。

  • 所示示例输入的两个文件中的installremove 行从不相同。

由于此输入在两个文件之间实际上没有任何相同的行,问题中描述的输出是完全正确的。


仅发出可能相同的有意义的列,我们最终得到:

comm -23 <(awk '{ print $4 " " $6 }' <install.txt | sort) \
<(awk '{ print $4 " " $6 }' <removed.txt | sort)

https://ideone.com/IheVRL 查看运行,并正确地只发出(正确的)输出:

flex-old:amd54 3.7.4a-10ubuntu1

关于linux - comm 在具有相同元素的两个日志文件之间不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48848179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com