Linux命令 fgrep - 為文件搜索文字字符串

2021-11-10 10:09 更新

fgrep

為文件搜索文字字符串

補(bǔ)充說(shuō)明

fgrep命令 是用來(lái)搜索 file 參數(shù)指定的輸入文件(缺省為標(biāo)準(zhǔn)輸入)中的匹配模式的行。fgrep 命令特別搜索 Pattern 參數(shù),它們是固定的字符串。如果在 File 參數(shù)中指定一個(gè)以上的文件 fgrep 命令將顯示包含匹配行的文件。

fgrep 命令于 grep 和 egrep 命令不同,因?yàn)樗阉髯址皇撬阉髌ヅ浔磉_(dá)式的模式。fgrep 命令使用快速的壓縮算法。$, *, [, |, (, )和\等字符串被 fgrep 命令按字面意思解釋。這些字符并不解釋為正則表達(dá)式,但它們?cè)?grep 和 egrep 命令中解釋為正則表達(dá)式。因?yàn)檫@些字符對(duì)于 shell 有特定的含義,完整的字符串應(yīng)該加上單引號(hào)‘ ... ’。. 如果沒(méi)有指定文件, fgrep 命令假定標(biāo)準(zhǔn)輸入。一般,找到的每行都復(fù)制到標(biāo)準(zhǔn)輸出中去。如果不止一個(gè)輸入文件,則在找到的每行前打印文件名。

  1. fgrep 命令和帶 -F 標(biāo)志的 grep命令是一樣的但出錯(cuò)和用法消息不同-s 標(biāo)志功能也不同。
  2. 每行限制在 2048 個(gè)字節(jié)。
  3. 段落(-p 標(biāo)志下)目前限制在5000個(gè)字符的長(zhǎng)度。
  4. 不要在特定的文件中運(yùn)行 grep 命令,因?yàn)闀?huì)產(chǎn)生不可預(yù)料的結(jié)果。
  5. 輸入行不能包含空字符。
  6. 輸入文件應(yīng)該以換行字符結(jié)尾。
  7. 雖然可以同時(shí)指定很多標(biāo)志,但某些標(biāo)志會(huì)覆蓋其余的標(biāo)志。例如,如果同時(shí)指定 -l 和 -n ,只有文件名寫(xiě)入到標(biāo)準(zhǔn)輸出中去。

語(yǔ)法

fgrep(選項(xiàng))(參數(shù))

選項(xiàng)

-b:在找到的每行之前添加行所在的塊編號(hào)。使用此標(biāo)志有助于按照上下文查找磁盤(pán)塊號(hào)碼。-b 標(biāo)志不能用于標(biāo)準(zhǔn)輸入或者管道輸入。
-c:僅顯示匹配行的計(jì)數(shù)。
-e 模式:指定模式。這個(gè)工作模式很簡(jiǎn)單,但當(dāng)此模式以 a-(減號(hào)) 開(kāi)頭時(shí)卻是很有用的。
-f StringFile:指定包含字符串的文件。
-h:當(dāng)多個(gè)文件被處理時(shí)隱藏文件名。
-i:當(dāng)進(jìn)行比較時(shí)忽略字母的大小寫(xiě)。
-l:只列出包含匹配行的文件名(一次)。文件名之間用換行符分隔。
n:將文件中每行的相對(duì)行號(hào)置于行前。
-pSeparator:顯示包含匹配行的整個(gè)段落。段落之間將按照Separator參數(shù)指定的段落分隔符加以分隔,這些分隔符是與搜索模式有著相同格式的模式。包含段落分隔符的行將僅用作分隔符;它們不會(huì)被包含在輸出中。缺省的段落分隔符是空白行。
-q:禁止所有寫(xiě)入到標(biāo)準(zhǔn)輸出的操作,不管是否為匹配行。如果選中輸入行,以 0 狀態(tài)退出。
-s:僅顯示出錯(cuò)消息。這在檢查狀態(tài)時(shí)很有用。
-v:顯示除了匹配特定模式的行以外的所有行。
-w:執(zhí)行單詞搜索。
-x:顯示匹配模式的行,要求無(wú)額外的字符。
-y:當(dāng)進(jìn)行比較時(shí)忽略字符的大小寫(xiě)。

此命令返回以下出口值:

0    找到匹配項(xiàng)。
1    未找到匹配項(xiàng)。
>1   發(fā)現(xiàn)語(yǔ)法錯(cuò)誤,或者文件不可訪(fǎng)問(wèn)(即使找到了匹配項(xiàng))。

實(shí)例

搜索幾個(gè)文件中的一個(gè)簡(jiǎn)單字符串:

fgrep strcpy *.c

在當(dāng)前目錄下所有以 .c 字符串結(jié)尾的文件中搜索字符串 strcpy。

計(jì)數(shù)匹配某模式的行數(shù):

fgrep -c 『{』pgm.cfgrep -c 『}』pgm.c

顯示在 pgm.c 中包含左括號(hào)和右括號(hào)的行的數(shù)目。

如果在您的 C 程序中一行中沒(méi)有包含多于一個(gè) { (左括號(hào)) 或者 } (右括號(hào)),并且括號(hào)正確匹配,那么這兩個(gè)數(shù)字將是一樣的。如果這兩個(gè)數(shù)字不一樣,您可以將包含括號(hào)的行按照他們?cè)谖募械奈恢庙樞蝻@示出來(lái),使用以下命令:

egrep {\|} pgm.c

顯示包含某模式的文件名:

fgrep -l strcpy *.c

搜索當(dāng)前目錄下以 .c 結(jié)尾的文件,然后顯示包含 strcpy 字符串的文件名。


以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)