【问题标题】:How to grep the number in text file? [closed]如何grep文本文件中的数字? [关闭]
【发布时间】:2017-06-15 02:26:24
【问题描述】:

我想问一个关于 'awk' 的问题,例如:

awk '{print $8}' tes.txt

output : size=21341,

但我只想 grep 号码“21341”,你能告诉我如何 grep 号码的解决方案吗?

【问题讨论】:

标签: bash awk grep solution any


【解决方案1】:
awk '{print $8}' tes.txt | grep -o '[0-9]*'
output: 21341

grep -o <regex> 仅打印匹配行的匹配部分,每个这样的部分在单独的输出行上。查看更多详情。

https://www.gnu.org/software/grep/manual/grep.html

【讨论】:

    【解决方案2】:

    要提取= 后面的部分,请将输出通过管道传输到cut

    awk '{print $8}' tes.txt | cut -d= -f2
    

    【讨论】:

      【解决方案3】:
      awk '{split ($8, s, "="); print s[2]}' tes.txt
      output: 21341
      

      【讨论】:

      • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
      【解决方案4】:

      您可以使用awk 中的函数sub 来执行此操作。

      awk '{sub(/^.*=/,"",$8);print $8}' tes.txt
      

      sub(/^.*=/,"",$8):去掉“=”之前的模式,得到数字部分。

      【讨论】:

        【解决方案5】:

        sed:

        awk '{print $8}' tes.txt|sed 's/.*size=\(.*\),$/\1/'
        

        【讨论】:

          【解决方案6】:

          这里是一个 grep 解决方案:

          grep -oP '(?<=size=)\d+' file
          

          目前它会搜索整个文件,所以如果你想将它限制在一个特定的行,你必须先使用 awk。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-04-30
            • 2017-02-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多