如果我有:
abc a1b2c3 123
我如何grep不是字母数字字符或数字的整个字符串,以便我得到
abc
我以为我可以将-F
标志与[^0-9]
结合使用,即
grep -F '[^0-9]' filename
并返回不包含数字的整个字符串 - 但这不会返回任何内容。
有什么建议吗?
答案 0 :(得分:5)
如果你只想匹配那些没有任何数字部分的字母,请说:
grep -o "\b[[:alpha:]]*\b"
\b
匹配单词边缘的空字符串[[:alpha:]]
匹配字母字符。也就是说,A-Za-z加上你当地的。用你的例子:
$ echo "abc a1b2c3 123" | grep -o "\b[[:alpha:]]*\b"
abc
答案 1 :(得分:1)
像这样:
grep -wo '[^0-9]*' file
-w
- 与全文匹配-o
- 仅打印匹配的模式答案 2 :(得分:1)
您可以使用--word-regexp
(-w
)仅匹配不包含任何数字的字词:
$ grep -wo '[^[:digit:]]\+' <<<'abc a1b2c3 123'
abc
-o
将仅打印匹配的部分。