我有一個要求來搜索一個確切的單詞並打印一行。如果我沒有任何.
(點),它正在工作。使用grep匹配確切的單詞
$cat file
test1 ALL=ALL
w.test1 ALL=ALL
$grep -w test1 file
test1 ALL=ALL
w.test1 ALL=ALL
這是給第二行也,我想只能用確切的詞test1
線。
我有一個要求來搜索一個確切的單詞並打印一行。如果我沒有任何.
(點),它正在工作。使用grep匹配確切的單詞
$cat file
test1 ALL=ALL
w.test1 ALL=ALL
$grep -w test1 file
test1 ALL=ALL
w.test1 ALL=ALL
這是給第二行也,我想只能用確切的詞test1
線。
試試這個:
grep -E "^test1" file
這說明,任何以單詞TEST1作爲第一行開始。現在,如果你需要在行的中間找到它,那麼這是行不通的,但是你對此沒有特別的瞭解。至少在給出^的例子中會起作用。
謝謝,邏輯的作品,如果這個詞是行的開始詞。如果單詞位於我們正在搜索的行的中間,是否有任何選項? –
這個grep也會匹配從test1開始的單詞。例如TEST12。在任何情況下,raina77ow的評論是在文件的開始,中間或結尾匹配單詞的完整正則表達式。 'grep -e'(^ |)test1(| $)'file' – Matt
爲您的樣品,你可以在正則表達式
grep "^test1\s" file
這取決於你可能需要匹配以及什麼其他的分隔符與\s
指定用^
線和空間的開始。
我知道我是位遲了,但我發現這個問題,並認爲應答。 A 單詞被定義爲一個字符序列並以空格分隔。 所以我認爲這會工作 的grep -E「+測試1 |^test1的」文件
這個搜索與test1的或有測試由至少一個空格開頭行開始的行。對不起,我可以找到一個更好的方式,如果有人可以請糾正我:)
它也會匹配'test11'。我會建議使用-w(word grep選項):grep -w test1 – grundic
您可以採取以下作爲示例測試文件。下面的正則表達式
$cat /tmp/file
test1 ALL=ALL
abc test1 ALL=ALL
test1 ALL=ALL
w.test1 ALL=ALL
testing w.test1 ALL=ALL
運行搜索開始TEST1一個單詞並且在線路也之間有一個字TEST1的線。
$ grep -E '(^|\s+)test1\b' /tmp/file
test1 ALL=ALL
abc test1 ALL=ALL
test1 ALL=ALL
它應該是'grep -e'(^ |)test1(| $)'file',也許?我對你在這裏的'確切的詞'所指的含義有點困惑;因爲,是的,'w.test'與''[[:<:]]test1[[:>:]]'模式相匹配。 – raina77ow