grep的全非字母数字字符串和非数字
问题描述:
,如果我有:grep的全非字母数字字符串和非数字
abc a1b2c3 123
我如何可以grep整个字符串,使我得到
abc
不在一个字母数字字符或数字我以为我可以结合[^0-9]
使用-F
标志即
grep -F '[^0-9]' filename
并返回不包含数字的整个字符串 - 但这不会返回任何内容。
有什么建议吗?
答
如果你只是想匹配的字母词,那些没有任何数字部分,说:
grep -o "\b[[:alpha:]]*\b"
-
\b
空字符串在字 -
[[:alpha:]]
字母字符相匹配的边缘相匹配。也就是说,A-Za-z加上你的本地的。
你的榜样:
$ echo "abc a1b2c3 123" | grep -o "\b[[:alpha:]]*\b"
abc
答
像这样:
grep -wo '[^0-9]*' file
-
-w
- 只打印匹配的模式
-o
匹配
答
您可以使用--word-regexp
(-w
)只匹配不包含任何数字的话:
$ grep -wo '[^[:digit:]]\+' <<<'abc a1b2c3 123'
abc
-o
只打印匹配部分。
+0
非常感谢 - 通过'[0-9]'使用'[[:digit:]]'是否有优势? – brucezepplin
+1
@brucezepplin字符类'[:digit:]'将根据您的语言环境扩展为值,但在这种情况下'[0-9]'可以正常工作。 – heemayl
我正在尝试命令..但它没有找到字符串中的所有组合.'echo“abc a1b2c3 123 xyz aqw2”| grep -o“\ b [[:alpha:]] * \ b”',输出为 'abc'。任何想法@fedorqui –
@MathewsJose它真的取决于你正在使用的'grep',因为它可能不理解'[[:alpha:]]'。在我的cygwin中,它正确地返回'abc'和'xyz'。 – fedorqui