linux下的文字操作之 文字查詢 grep

2021-06-18 22:18:21 字數 1377 閱讀 9408

摘要:你有沒有這樣的應用場景:除錯乙個程式,出現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...