【问题标题】:How to use grep to first digit of matching line如何使用 grep 匹配行的第一位
【发布时间】:2015-01-06 19:29:32
【问题描述】:

我想只查找匹配行的第一个数字。我知道第一个数字只能是1 to 4

例如这个文件

2 Eggs
1 Bacon
5 Bread

grep -i eggs | grep ^[14]** or **grep -i eggs | grep ^#

不工作.... 但为什么不呢?

预期结果是数字2

【问题讨论】:

    标签: shell command-line grep


    【解决方案1】:

    我只会使用cut 命令:

    grep -i eggs yourfile | cut -c1

    【讨论】:

      【解决方案2】:

      您可以使用awk

      awk '/eggs/ {print $1}' file
      2
      

      它将搜索所有带有eggs 的行,然后打印第一列$1

      【讨论】:

        【解决方案3】:

        您希望 grep 的 -o 选项输出匹配的文本(不是整行),并且正则表达式 [1-4] 匹配从 1 到 4(而不是 @987654323 @ 匹配 1 或 4)

        grep -o '^[1-4]'
        

        要将您的 grep 管道包装成一个命令,如果您有 GNU grep,则可以使用它:

        grep -ioP '^[1-4](?=\s+eggs)'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-06-10
          • 1970-01-01
          • 2017-05-30
          • 2020-03-03
          • 2013-11-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多