我有這樣的話
MEdIa
media
MEDIA
mEdIa
_media_
_media
media_
ICP_MEDIA
在一個檔案中。我正在嘗試從以下命令中獲取關鍵字媒體
grep -irwE "media|*_media"
但是grep只能找到
MEdIa
media
MEDIA
mEdIa
_media
找不到_media_, media_ , ICP_MEDIA
uj5u.com熱心網友回復:
我很確定有更好的正則運算式 foo 的人可以提供更好的解決方案,但這對我來說適用于一組選定的值(見下文):
cat file.txt | grep -iwE "media|.*[\b_]media[\b_]*"
_media_
media
ICP_MEDIA
價值觀:
_media_
media
ICP_MEDIA
XXX_media_YYY
NOTMEDIA
NOT_MEDIAXX
uj5u.com熱心網友回復:
我在你給出的例子中試過這個:
cat find | grep 'media'
結果是這樣的:
media
_media_
_media
media_
PSfind是我將您的示例放入的檔案的名稱。
uj5u.com熱心網友回復:
回答您的問題:為什么 grep 找不到所有匹配項
-w, --word-regexp: 只選擇那些包含構成整個單詞的匹配的行。測驗是匹配的子字串必須在行首,或者前面有一個非單詞組成字符。同樣,它必須位于行尾或后跟非單詞組成字符。構成單詞的字符是字母、數字和下劃線。-x如果還指定了此選項,則此選項無效。
所以條目_media_不匹配media或*media_有以下原因:
_media_不是一個完整的單詞匹配,media因為它錯過了下劃線_media_不是一個完整的單詞匹配,*media_因為在正則運算式中,正則運算式開頭的星號只是一個星號,失去了它的特殊含義。并且由于*與 不同_,因此沒有匹配項。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/515935.html
標籤:壳grep
