首页 > 解决方案 > 使用 grep 获取一行中的第一个数字

问题描述

示例文件 text.txt:

13 25 你好

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

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

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

标签: bashgrep

解决方案


你可以使用类似的东西:

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

推荐阅读