如何grep所有以数字开头的单词?

如何grep所有以数字开头的单词?

我想知道如何 grep 所有以数字开头的单词。到目前为止,我已经做到了:

egrep "^[[:digit:]]" tst

但它只打印出一行以数字开头的行。

预先感谢您的帮助。

答案1

如果你grep支持 Perl Compatible RegExp ( -P),你可以这样做:

grep -Po '(?<=^|\s)\d[^\s]*(?=\s|$)' file.txt
  • 假设word你的意思是仅用空格分隔的字符

  • ?<=^|\s)是零宽度正向查找模式,确保我们想要的单词前面是行首或空格

  • \d[^\s]*是我们想要的匹配,以数字开头的单词

  • (?=\s|$)是零宽度正前瞻模式,确保我们所需的匹配后面跟着空格或行尾。

答案2

如果你想打印以数字开头的单词列表,每行一个,你可以这样做:

tr -cs '[:digit:][:alpha:]' '\n' | grep '^[:digit:]'

tr命令列出所有字母数字字符串,每行一个。那么 grep 只需要查看行首的数字。

答案3

我建议

echo "foo bar 11baz q3ux
one, 2two? three!" | grep -o '\<[[:digit:]][^[:blank:]]*\>'
11baz
2two

这分别使用\<\>作为词开始和词结束标记。

相关内容