【问题标题】:Get first number in a line using grep使用 grep 获取一行中的第一个数字
【发布时间】:2021-02-03 21:19:27
【问题描述】:

示例文件 text.txt:

13 25 你好

我正在尝试使用 grep 来获取文件中只有 1 行的第一个数字,并且该数字可以是任意长度,在本示例中,我的预期输出为 13。

我试过这个正则表达式 (\d+),它在像 regexr 这样的正则表达式编辑器中给了我正确的输出,但是 grep 不产生任何输出。

grep -o '(\d+)' test.txt 

【问题讨论】:

    标签: bash grep


    【解决方案1】:

    你可以使用类似的东西:

    grep -oE '^\s*[0-9]+' text.file
    

    sed 's/[ \t]*\([0-9]\{1,\}\).*/\1/' text.file
    

    例子:

    echo "13 25 hello" > text.txt
    grep -oE '^\s*[0-9]+' text.file
    Output: 13
    sed 's/[ \t]*\([0-9]\{1,\}\).*/\1/' text.file 
    Output: 13
    

    --

    echo "9912 25 hello" > text.txt
    grep -oE '^\s*[0-9]+' text.file
    Output: 9912
    sed 's/[ \t]*\([0-9]\{1,\}\).*/\1/' text.file 
    Output: 9912
    

    【讨论】:

      猜你喜欢
      • 2016-08-12
      • 2014-03-28
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多