【问题标题】:Returning only a part of the string from a grep result [duplicate]从 grep 结果中仅返回字符串的一部分 [重复]
【发布时间】:2017-03-22 01:09:01
【问题描述】:

我正在对包含以下形式的一些简单日志的文本文件使用 grep:-

[ABC.txt]
1=abc|2=def|3=ghi|4=hjk|5=lmn|6=opq
8=rst|9=uvx|10=wyz
.
.
.
.

等等

标签 1、2、3、4 等的值在整个文件中是不同的,并且在某些情况下还包括特殊字符。有没有办法我只能通过 GREP 检索标签 4 的值而没有其他标签的值?

顺便说一句,这个日志文件本身就是 grep 的结果。所以请建议我是否应该先重定向输出然后应用第二个 grep 或在第一个上应用第二个 grep,考虑到它是一个大文件。

【问题讨论】:

  • 请显示正确的minimal reproducible example 以及预期的输出和您已经尝试过的内容。此外,提供初始 grep 会有所帮助,因为一切都可以优化。

标签: bash grep


【解决方案1】:

您可以通过管道将 grep 的结果剪切,用“|”分割字段并选择第四个字段

[your grep command] | cut -d | -f 4

如果您希望“4=”消失,您可以通过第二次使用 cut 来做同样的事情,但这次使用“=”作为分隔符。

http://pubs.opengroup.org/onlinepubs/009695399/utilities/cut.html

【讨论】:

    【解决方案2】:
    grep -Po '(?<=4=)[^|]*' ABC.txt
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 2014-07-24
    • 2021-02-15
    • 1970-01-01
    相关资源
    最近更新 更多