文本過濾工具(grep)

來源:本站原創 Linux 超過1,013 views圍觀 0條評論

原帖由 "網中人" 發表:
比方以 grep 來說, 在 Linux 上你可找到 grep, egrep, fgrep 這幾個程序, 其差異大致如下:
* grep:
傳統的 grep 程序, 在沒有參數的情況下, 只輸出符合 RE 字符串之句子. 常見參數如下:
-v: 逆反模示, 只輸出"不含" RE 字符串之句子.
-r: 遞歸模式, 可同時處理所有層級子目錄里的文件.
-q: 靜默模式, 不輸出任何結果(stderr 除外. 常用以獲取 return value, 符合為 true, 否則為 false .)
-i: 忽略大小寫.
-w: 整詞比對, 類似 \<word\> .
-n: 同時輸出行號.
-c: 只輸出符合比對的行數.
-l: 只輸出符合比對的文件名稱.
-o: 只輸出符合 RE 的字符串. (gnu 新版獨有, 不見得所有版本都支持.)
-E: 切換為 egrep .
* egrep:
為 grep 的擴充版本, 改良了許多傳統 grep 不能或不便的操作. 比方說:
– grep 之下不支持 ? 與 + 這兩種 modifier, 但 egrep 則可.
– grep 不支持 a|b 或 (abc|xyz) 這類"或一"比對, 但 egrep 則可.
– grep 在處理 {n,m} 時, 需用 \{ 與 \} 處理, 但 egrep 則不需.
諸如此類的… 我個人會建議能用 egrep 就不用 grep 啦… ^_^
* fgrep:
不作 RE 處理, 表達式僅作一般字符串處理, 所有 meta 均失去功能.

g r e p一般格式為:

  1. grep [選項]基本正則表達式[文件]
  2. 這里基本正則表達式可為字符串。

復制代碼

單引號雙引號
在g r e p命令中輸入字符串參數時,最好將其用雙引號括起來。

在調用模式匹配時,應使用單引號。
例如:“m y s t r i n g”。這樣做有兩個原因,一是以防被誤解為s h e l l命令,二是可以用來查找多個單詞組成的字符串。
在調用變量時,也應該使用雙引號,諸如: g r e p“$ M Y VA R”文件名,如果不這樣,將沒有返回結果。
常用的g r e p選項有:

-c 只輸出匹配行的計數。
-i 不區分大小寫(只適用于單字符)。
-h 查詢多文件時不顯示文件名。
-l 查詢多文件時只輸出包含匹配字符的文件名。
-n 顯示匹配行及行號。
-s 不顯示不存在或無匹配文本的錯誤信息。
-v 顯示不包含匹配文本的所有行。

開始討論之前,先生成一個文件,插入一段文本,并在每列后加入< Ta b >鍵,g r e p命令示例中絕大多數將以此為例,其命名為d a t a . . f。生成一個文件,d a t a . f的記錄結構如下:

第1列:城市位置編號。
第2列:月份。
第3列:存儲代碼及出庫年份。
第4列:產品代號。
第5列:產品統一標價。
第6列:標識號。
第7列:合格數量。

文件內容如下:

  1. $ cat data.f
  2. 48      Dec     3BC1977 LPSX    68.00   LVX2A   138
  3. 483     Sept    5AP1996 USP     65.00   LVX2C   189
  4. 47      Oct     3ZL1998 LPSX    43.00   KVM9D   512
  5. 219     dec     2CC1999 CAD     23.00   PLV2C   68
  6. 484     nov     7PL1996 CAD     49.00   PLV2C   234
  7. 483     may     5PA1998 USP     37.00   KVM9D   644
  8. 216     sept    3ZL1998 USP     86.00   KVM9E   234

復制代碼

文章出自:CCIE那點事 http://www.qdxgqk.live/ 版權所有。本站文章除注明出處外,皆為作者原創文章,可自由引用,但請注明來源。 禁止全文轉載。
本文鏈接:http://www.qdxgqk.live/?p=3324轉載請注明轉自CCIE那點事
如果喜歡:點此訂閱本站
  • 相關文章
  • 為您推薦
  • 各種觀點
?
暫時還木有人評論,坐等沙發!
發表評論

您必須 [ 登錄 ] 才能發表留言!

?
?
萌宠夺宝游戏