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 
+0

我正在尝试命令..但它没有找到字符串中的所有组合.'echo“abc a1b2c3 123 xyz aqw2”| grep -o“\ b [[:alpha:]] * \ b”',输出为 'abc'。任何想法@fedorqui –

+0

@MathewsJose它真的取决于你正在使用的'grep',因为它可能不理解'[[:alpha:]]'。在我的cygwin中,它正确地返回'abc'和'xyz'。 – fedorqui

像这样:

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