2016-06-14 255 views
1

,如果我有:grep的全非字母數字字符串和非數字

abc a1b2c3 123 

我如何可以grep整個字符串,使我得到

abc 

不在一個字母數字字符或數字我以爲我可以結合[^0-9]使用-F標誌即

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

並返回不包含數字的整個字符串 - 但這不會返回任何內容。

有什麼建議嗎?

回答

5

如果你只是想匹配的字母詞,那些沒有任何數字部分,說:

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

1

像這樣:

grep -wo '[^0-9]*' file 
  • -w - 只打印匹配的模式
- 針對整個詞
  • -o匹配
  • 1

    您可以使用--word-regexp-w)只匹配不包含任何數字的話:

    $ grep -wo '[^[:digit:]]\+' <<<'abc a1b2c3 123' 
    abc 
    

    -o只打印匹配部分。

    +0

    非常感謝 - 通過'[0-9]'使用'[[:digit:]]'是否有優勢? – brucezepplin

    +1

    @brucezepplin字符類'[:digit:]'將根據您的語言環境擴展爲值,但在這種情況下'[0-9]'可以正常工作。 – heemayl

    相關問題