2016-05-08 92 views
0

-Fgrep一種選擇,從下面的說明書:什麼是grep的手冊中的-F選項的含義

解釋圖案作爲固定的字符串的列表,通過 換行符,分離其中的任何一個是要匹配

我的問題是

  1. 如何分隔的多個固定的字符串,什麼是換行符,\n\
  2. 看來grep -F a\nh file無效,如果我想查找以字符ah開頭的行。

在此先感謝!

回答

2

grep-F將導致模式來匹配字面上即沒有正則表達式解釋上的圖案(多個)來完成。

可以通過\n輸入多個模式,即新行分隔。

並非所有的shell默認將\n轉換爲換行符,在這種情況下可以使用$'a\nh'

例子:

$ echo $'foo\nf.o\nba.r\nbaar\n' 
foo 
f.o 
ba.r 
baar 

$ grep -F $'f.o\nba.r' <<<$'foo\nf.o\nba.r\nbaar\n' 
f.o 
ba.r 
+0

'$ '...''將被解釋的方式爲C字符串相同,但它是一個bash擴展。雖然bash不支持在字符串中對'\ n'進行解釋,但是破折號確實如此。我認爲安全的呼叫是使用'tmp_var = $(printf「hello \ nworld」)' – andlrc

+0

@heemayl shell中的'<<<'是什麼,它似乎是它後面的內容成爲標準輸入。 – Tracy

+0

@Tracy Exactly ..它在這裏被稱爲字符串(heredoc的一個子類型)檢查'man bash' – heemayl

0

默認情況下,該模式是基本正則表達式(BRE)模式,但-F將被解釋爲沒有元字符的文字字符串。

您也可以使用-E這將啓用擴展正則表達式(ERE)。

% grep -F '..' <<< $'hello\nworld\n...' 
... 
% grep '..' <<< $'hello\nworld\n...' 
hello 
world 
... 
相關問題