【问题标题】:How to search for 'String' and return value immediately following?如何搜索“字符串”并立即返回值?
【发布时间】:2014-01-09 15:14:35
【问题描述】:

我有很多文本文件需要搜索一个字符串,然后返回后面的值。例如,我的文件可能如下所示:

text
text
text
a =  12  b =  14 String =  25
text

我想搜索“String”,然后返回 25。我尝试使用

grep -i "String" filename.out

但这给了我整条线。我找到了很多用于查找特定字符串的信息,但不是紧随其后的内容。提前谢谢你。

【问题讨论】:

    标签: linux text grep


    【解决方案1】:

    试试这个:

    grep -iPo '\bstring\s*=\s*\K\S*'
    

    【讨论】:

    • \s\S 是什么?
    • @Smac89 空字符和非空字符
    • 谢谢!这样做。快速跟进,什么是\K?我在 grep 手册中找不到它。
    • 肯特,\b 没用。你能解释一下你为什么放它吗?出于某些原因?
    • @BMW,如果你知道\b 是什么意思,你就会知道这是有道理的。例如,想想OneString = 100String = 25,OP 想要 25 而不是 100。
    【解决方案2】:

    你可以试试这个

    grep -oi "String *= *[0-9]*" filename.out|grep -o "[0-9]*"
    

    我认为有一些最性感的方式来实现;)

    【讨论】:

      【解决方案3】:

      这是awk的一种方法

      awk -F "String =[ ]*" '/String/ {print $2}' filename.out
      25
      

      如果String后面可能有其他变量,使用这个:

      awk -F "String =" '/String/ {split($2,a," ");print a[1]}' filename.out
      25
      

      【讨论】:

        猜你喜欢
        • 2014-07-26
        • 1970-01-01
        • 2021-01-19
        • 2021-10-22
        • 2015-12-18
        • 1970-01-01
        • 1970-01-01
        • 2011-01-18
        • 2019-09-17
        相关资源
        最近更新 更多