2015-04-05 170 views
1

例子:如何搜索/格式化文件中的特定單詞?

$ grep -w "edición" /tmp/apn_ 
edición acción__n 
post-edición acción__n 

$ grep -w "bar" /tmp/apn_ 
bar abril__n 
barítono abismo__n 
barógrafo abismo__n 
barómetro abismo__n 
barón barón__n 

我只想說,「欄」或「edición」,而不是其他的結果,其中這些子串。 -w國旗的目的在這裏沒有實現。請建議我該怎麼做?

回答

0

我猜這發生是因爲您的區域設置變量設置不正確。

% LANG=en_US.UTF-8 grep -w bar as 
bar abril__n 

% LANG=bla grep -w bar as 
bar abril__n 
barítono abismo__n 
barógrafo abismo__n 
barómetro abismo__n 
barón barón__n 
+0

$ LANG =的en_US.UTF-8的grep -w 「酒吧」 的/ tmp/apn_ almíbarabril__n 酒吧abril__n barítonoabismo__n barógrafoabismo__n barómetroabismo__n 男爵barón__n – user2238884 2015-04-05 13:37:13

+0

@ user2238884你有它在你的語言環境。 conf/locale.gen?你運行過locale-gen嗎? – cnicutar 2015-04-05 13:40:49

+0

不,我沒有運行任何locale-gen,我在終端上運行,因爲它是。 – user2238884 2015-04-05 13:43:14

0

窗體grep手冊頁:

試驗是,匹配子必須是在 開頭行的,或由非字構成字符之前。同樣,它必須位於行末,或者後面跟着一個非單詞組成字符 。單詞組成字符是字母,數字和下劃線。

看來,grep將í之類看作'非單詞'字母,因此他們愚弄-w。

可能的解決方法是寫自己的正則表達式,比如這一個:

grep -P "(^|[[:space:]]+|[[:punct:]]+)bar([[:space:]]+|[[:punct:]]+|$)" 

你可能要看看根據您輸入的文本幾個角落的情況,但這是一般的想法。

乾淨的方式仍然是讓grep瞭解你的語言環境。

相關問題