摘要:你有沒有這樣的應用場景:除錯乙個程式,出現debug的提示資訊,現在你需要定位是哪個檔案包含了這個debug資訊,也就是說,你需要在乙個目錄下的多個檔案(可能包含子目錄)中查詢某個字串的位置;另外,有時候,乙個程式崩潰,我們需要通過程序控制將其殺死,如何快速找到程序號並殺死程序。本文所講的grep命令將有至於你完成這樣的任務。
grep的工作方式是這樣的,它在乙個或多個檔案中搜尋字串模板。如果模板包括空格,則必須被引用,模板後的所有字串被看作檔名。搜尋的結果被送到螢幕,不影響原檔案內容。
grep可用於shell指令碼,因為grep通過返回乙個狀態值來說明搜尋的狀態,如果模板搜尋成功,則返回0,如果搜尋不成功,則返回1,如果搜尋的檔案不存在,則返回2。我們利用這些返回值就可進行一些自動化的文字處理工作。
-?同時顯示匹配行上下的?行,如:grep -2 pattern filename同時顯示匹配行的上下2行。
-c,--count
只列印匹配的行數,不顯示匹配的內容。
-f file,--file=file
從檔案中提取模板。空檔案中包含0個模板,所以什麼都不匹配。
-h,--no-filename
當搜尋多個檔案時,不顯示匹配檔名字首。
-i,--ignore-case
忽略大小寫差別。
-q,--quiet
取消顯示,只返回退出狀態。0則表示找到了匹配的行。
-l,--files-with-matches
列印匹配模板的檔案清單。
-l,--files-without-match
列印不匹配模板的檔案清單。
-n,--line-number
在匹配的行前面列印行號。
-s,--silent
不顯示關於不存在或者無法讀取檔案的錯誤資訊。
-v,--revert-match
反檢索,只顯示不匹配的行。
-w,--word-regexp
如果被\《和\>引用,就把表示式做為乙個單詞搜尋。
1)場景一:進行perf軟體效能測試,出現提示debug資訊,vmlinux symtab matches kallsyms,我們需要尋找是哪個檔案包含了這個debug資訊:
hyk@hyk-linux:/media/usr/src/linux-3.10.9/tools/perf
$ grep -r 'vmlinux symtab matches kallsyms' *
binary file perf matches
tests/builtin-test.c:.desc = "vmlinux symtab matches kallsyms",
binary file tests/builtin-test.o matches
外部參考:
linux(六)之文字操作
接下來我們一起來看一下再linux中怎麼去對文字進行操作的 既然要操作文字,所以我們要對文字有乙個了解,那什麼是文字檔案呢。文字檔案是一種由若干行字元構成的計算機檔案。文字檔案存在於計算機檔案系統中。通常,通過在文字檔案最後一行後放置檔案結束標誌來。文字檔案通常有系統配置檔案,網頁,程式源 等等。1...
Linux常用文字操作
1.最常用的head和tail head和tail分別顯示檔案的頂部和底部,要檢視文字的頂部幾行或底部幾行,需要分別使用這兩個命令加 n選項標誌 head和tail的基本用法 head n10 untitled.txt tail n10 untitled.txt tail命令常見的用途就是觀察日誌檔...
linux文字操作(vi vim)
什麼是 vim?vim是從 vi 發展出來的乙個文字編輯器。補完 編譯及錯誤跳轉等方便程式設計的功能特別豐富,在程式設計師中被廣泛使用。簡單的來說,vi 是老式的字處理器,不過功能已經很齊全了,但是還是有可以進步的地方。vim 則可以說是程式開發者的一項很好用的工具。連 vim 的官方 自己也說 v...