我有一个文件,在一些字符串中包含3位数字或4位数字。我希望能够只选择3位数字。 我尝试了以下方法:
`[0-9][0-9][0-9]` or `\d{3}`
也与4位数字自然匹配。而\d{3}
并不匹配任何内容。
我也想只选择3位数。有没有办法从选择中排除3位数之前和之后的字符?
我怎样才能做到这一点?我希望能够使用sed
和grep
。
答案 0 :(得分:1)
正则表达式
\b[[:alpha:]]*[[:digit:]]{3}[[:alpha:]]*\b
应该完成你的任务。 通过输入
来试试echo 123 | egrep '\b[[:alpha:]]*[[:digit:]]{3}[[:alpha:]]*\b'
适用于123
,而1234
,a1323
则不受理。如果你想使用sed
({3}
似乎在这里不起作用),你可以试试
sed -e 's/\(\b[[:alpha:]]*\)\([[:digit:]][[:digit:]][[:digit:]]\)\(\b[[:alpha:]]*\)/\2/'
正则表达式只匹配三位数字,并删除之前和之后的单词部分。