【问题标题】:Find the closest match between two files in unix在 unix 中查找两个文件之间最接近的匹配项
【发布时间】:2021-06-23 18:06:52
【问题描述】:

作为初学者,我正在寻找 shell 脚本的解决方案,

我有 file1,内容如下:

timestamp6 serverName A: Session3: session closed for user grpname

timestamp5 serverName A: Session3: session opened for user grpname by jack

timestamp4 serverName A: Session2: session closed for user grpname

timestamp3 serverName A: Session2: session opened for user grpname by john

timestamp2 serverName A: Session1: session closed for user grpname

timestamp1 serverName A: Session1: session opened for user grpname by matt

file2 以及文件名及其修改后的时间戳。

Filename1 timestamp_x

Filename2 timestamp_y

Filename3 timestamp_z

我正在寻找 shell 脚本解决方案,它可以告诉两个文件之间的时间戳最接近的匹配。

像 timestamp_x 和 timestamp_y 一样,介于 timestamp_1 和 timestamp_2 之间。

谢谢

【问题讨论】:

标签: linux bash shell unix script


【解决方案1】:

如果您的时间戳排序(可能使用 -M)。对 file1 和 file2 的内容进行排序,交换两个字段的顺序。然后使用带有上下文选项的 grep 来查看之前/之后的内容:

(cat file1; sed 's/\(.*\) \(.*\)/\2 \1/' file2) | sort | egrep -C1 'timestamp_[x-z]'

【讨论】:

  • 关于 pam_unix 日志的任何想法,我想知道日志是如何编写的,以及如何捕获基于主机的登录用户,但不显示会话是否关闭。例如:3 月 24 日 11:22:07 主机名 basu: pam_unix(su-l:session): 会话由 user1(uid=0) 为用户组名打开 3 月 24 日 17:32:04 主机名 basu: pam_unix(su-l: session): 用户组名的会话关闭
  • 查看源代码,它们的可读性很强。这是一个诡计,但模块可能只使用 syslog(3)。
猜你喜欢
  • 1970-01-01
  • 2015-09-29
  • 1970-01-01
  • 2020-01-30
  • 2014-04-09
  • 1970-01-01
  • 2021-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多