【问题标题】:Use sed and regex to isolate data使用 sed 和 regex 隔离数据
【发布时间】:2020-01-19 16:48:50
【问题描述】:

嘿嘿

我正在学习 sed 和 regex 和分组以及如何将数据与文件隔离开来。

好的,我在那里写了一个 sed 命令给我,auth.log 中的所有 IP 并将 ips 写入 logips.log 文件中,所以我需要对正则表达式进行分组并采用第二个(ip)组。

sed 's/(.*)([0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3})(.*)/\/2/g' /var/log/auth.log > logips.log

但我每次都将整个 auth.log 放在我的 logips.log 中。经过2个小时的思考和寻找,我在这里问。

我希望有人能把我推向正确的方向来解决这个问题。

祝你好运

【问题讨论】:

  • 请发布一些具有预期输出的示例数据。
  • 嗯,我期望的只是 auth.log 中的 IP 地址,我得到的是 logips.log 中 auth.log 的副本。
  • 是的,发布一个示例,其中包含您的 auth.log 中的几行代码,然后发布一个您希望结果看起来如何的示例
  • 好的,在 auth.log 中是:Sep 18 14:06:28 tartaros sshd[2042]: Received disconnect from 85.7.143.X port 4444:11: disconnected by user Sep 18 14:06:28 tartaros sshd[2042]: Disconnected from user hades 85.7.143.X port 4444 Sep 18 14:06:28 tartaros sshd[1935]: pam_unix(sshd:session): session closed for user hades 而在 logips.log 中我只希望:85.7.143.X
  • 问题应该是独立的,不需要阅读 cmets 来理解问题。请将您的示例数据移动到 Q 的正文中并删除您的 cmets。祝你好运。

标签: regex logging sed filter


【解决方案1】:

要从 auth.log 获取所有 IP,请尝试使用 grep

grep -o -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" auth.log
  • -o 输出只匹配
  • -E 扩展正则表达式
  • [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}匹配IP

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多