【问题标题】:Two string compare after grep [closed]grep之后的两个字符串比较[关闭]
【发布时间】:2020-10-18 12:23:10
【问题描述】:

我得到以下行

2020-10-17 14:55:39,586 INFO  [http-bio-exec-60] [] [D88E13F571A51598613FAA078A215326.server.host.com.:9991] [some.package.Class] TEST_STRING - RSI: 506B48ECADC4BE0CEBF7C7D33D036B67.server.host.com.:9991

我做了 grep "D88E13F571A51598613FAA078A215326" 并得到了上面的行。有没有办法在 grep 之后运行命令来检查 D88E13F571A51598613FAA078A215326 和 506B48ECADC4BE0CEBF7C7D33D036B67 是否相等?

谢谢。

【问题讨论】:

  • 将 grep 的输出通过管道传输到 Perl 单行中,该单行在 \W+(非单词字符)上拆分并在拆分后比较字段。
  • if [ $( grep -o D88E13F571A51598613FAA078A215326 inputFile) = "D88E13F571A51598613FAA078A215326" ] ; then echo found str in inputFile ; echo echo no match" ; fi(也许你需要-eq而不是=

标签: linux grep csh


【解决方案1】:

如果您已经知道第一个模式,这将起作用:

PATTERN=D88E13F571A51598613FAA078A215326
grep "\[$PATTERN.*RSI: $PATTERN" input_file

【讨论】:

    【解决方案2】:

    我得到了以下行,这不是从这里开始的好方法:

    您的行包含相当多的信息,如 cmets 中所述,您可以使用 Perl 或 awk 或任何其他工具对其进行解析,但我会建议其他方式:您如何获得此行(我猜这是一些过程)?您可能会要求该其他过程的作者以这样一种方式更改输出,以便您更轻松地解析它并进行您的目标比较。

    【讨论】:

      【解决方案3】:

      grep 的输出传递到这个 Perl 单行中,如果字段 13 和 23 与字符串相同,它将在非单词字符上拆分行并打印它:

      echo '2020-10-17 14:55:39,586 INFO  [http-bio-exec-60] [] [D88E13F571A51598613FAA078A215326.server.host.com.:9991] [some.package.Class] TEST_STRING - RSI: 506B48ECADC4BE0CEBF7C7D33D036B67.server.host.com.:9991' | \
        grep 'D88E13F571A51598613FAA078A215326' | \
        perl -F'/\W+/' -lane 'print if $F[12] eq $F[22];'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-15
        • 1970-01-01
        相关资源
        最近更新 更多