grep整个非字母数字字符串和非数字

时间:2016-06-14 13:33:57

标签: regex bash unix grep

如果我有:

abc a1b2c3 123

我如何grep不是字母数字字符或数字的整个字符串,以便我得到

abc

我以为我可以将-F标志与[^0-9]结合使用,即

grep -F '[^0-9]' filename

并返回不包含数字的整个字符串 - 但这不会返回任何内容。

有什么建议吗?

3 个答案:

答案 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将仅打印匹配的部分。