我使用下面的命令在子目錄到grep東西如何用grep整個字
find . | xargs grep -s 's:text'
然而,這也發現類似<s:textfield name="sdfsf"...../>
東西,我能做些什麼,以避免所以它只是發現像<s:text name="sdfsdf"/>
或與此有關的東西....也發現<s:text somethingElse="lkjkj" name="lkkj"
基本上s:text
和name
應位於同一行上。
我使用下面的命令在子目錄到grep東西如何用grep整個字
find . | xargs grep -s 's:text'
然而,這也發現類似<s:textfield name="sdfsf"...../>
東西,我能做些什麼,以避免所以它只是發現像<s:text name="sdfsdf"/>
或與此有關的東西....也發現<s:text somethingElse="lkjkj" name="lkkj"
基本上s:text
和name
應位於同一行上。
您希望-w
選項指定它是單詞的結尾。
find . | xargs grep -sw 's:text'
如果您只是想過濾掉其餘文本部分,則可以執行此操作。
xargs grep -s 's:text '
這應該只發現s:text
情況下,與一個't後的空間。如果您需要查找僅具有名稱元素的s:text
實例,請將結果輸送到另一個grep
表達式,或者使用正則表達式僅過濾所需的元素。
如果「文本」在輸出結尾處怎麼辦?它會不會在你的解決方案中被跳過? – pkuszewski 2015-12-19 22:21:44
您可以通過grep的搜索遞歸下降的xargs
命令。而你通常不需要's'的標誌。因此:
grep -wr 's:text'
使用\b
以匹配「字邊界」,這將使得在全字搜索匹配。
所以你的grep會看起來像
grep -r "\bSTRING\b"
添加顏色和行號也會有所幫助
grep --color -rn "\bSTRING\b"
從http://www.regular-expressions.info/wordboundaries.html:
有跡象表明,有資格作爲三個不同的位置字界:
- 在字符串中的第一個字符之前,如果第一個字符是 單詞字符。
- 在字符串中的最後一個字符後面,如果最後一個 字符是單詞字符。
- 字符串中的兩個字符之間, 其中一個是單詞字符,另一個不是單詞字符。
儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/17780631) – 2017-10-30 11:55:16
我確實提供了答案:rg -w's:text'。 – ms4720 2017-11-01 08:13:14
沒有人閱讀標題爲 「如何到grep整個世界** **」? – Earlz 2010-05-21 01:50:13
爲lulz :) – josh 2010-05-21 01:57:58
@Earlz,不,主要是因爲我谷歌搜索「grep整個詞」。 – 2017-02-11 05:05:22