2014-02-20 83 views
0

我有一個文件temp.txt如下。grep找不到「。*」字符串值

a.*,super 

我想給grep .*來檢查值是否存在於文件或不在家。使用

命令:

grep -i ".*" temp.txt 

返回任何

+0

'人bash',部分'REGULAR EXPRESSIONS'。 –

+0

我希望該命令可以返回文件中的每一行,而不是任何內容。 – chepner

回答

2

使用AWK

awk '/\.\*/' file 

或fgrep一樣

fgrep ".*" file 
1

兩個.*在正則表達式中的特殊含義。逃避他們匹配字面。

$ cat temp.txt 
a.*,super 
$ grep "\.\*" temp.txt 
a.*,super 
$ echo $? 
0 


$ grep "there-is-no-such-string" temp.txt 
$ echo $? 
1 

-i不需要,因爲在正則表達式中沒有字母表。

5

這是因爲grep認爲該模式爲正則表達式。

要使grep將其解釋爲文字,請使用-F

grep -F ".*" temp.txt 

而且,不需要注-i,因爲沒有區別的情況下考慮到(我們比如用它來製作的grep返回ABaBAbabgrep -i "ab"時)。


作爲man grep說:

-F,--fixed串

解釋圖案作爲固定的字符串的列表,由換行分隔,其中 任何的是匹配。 (-F由POSIX指定。)

-i,--ignore情況

忽略大小寫區別在圖案和輸入的文件兩者。 (-i 由POSIX指定。)

+0

+1,但這裏不需要'-i'。 – anubhava

+0

確實,只是更新。謝謝@anubhava! – fedorqui

+0

@fedorqui:如果我不想在temp.txt中搜索它,但我想在之前的輸出中搜索,那麼它會工作嗎? 'echo「你好。* | grep -F」。*「' – logan