【发布时间】:2021-02-03 21:19:27
【问题描述】:
示例文件 text.txt:
13 25 你好
我正在尝试使用 grep 来获取文件中只有 1 行的第一个数字,并且该数字可以是任意长度,在本示例中,我的预期输出为 13。
我试过这个正则表达式 (\d+),它在像 regexr 这样的正则表达式编辑器中给了我正确的输出,但是 grep 不产生任何输出。
grep -o '(\d+)' test.txt
【问题讨论】:
示例文件 text.txt:
13 25 你好
我正在尝试使用 grep 来获取文件中只有 1 行的第一个数字,并且该数字可以是任意长度,在本示例中,我的预期输出为 13。
我试过这个正则表达式 (\d+),它在像 regexr 这样的正则表达式编辑器中给了我正确的输出,但是 grep 不产生任何输出。
grep -o '(\d+)' test.txt
【问题讨论】:
你可以使用类似的东西:
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
【讨论】: