浙江11选5数据top遗漏:Linux系統中查找文本的技巧你都掌握哪些?

浙江11选5任3遗漏 www.ehxis.com 今天小編要跟大家分享的文章是關于浙江11选5任3遗漏中查找文本的技巧你都掌握哪些?之前小編也為大家分享過很多Linux相關的命令,但是對文件內容搜索的命令似乎還沒有涉及,今天小編就為大家帶來了這篇文章,讓我們一起來看一看文件查找grep命令的相關知識。 Linux入門新手和正在Linux學習的小伙伴快來看一看吧,希望能夠對大家有所幫助!

Linux系統中查找文本的技巧你都掌握哪些?

一、常見用法

我們會經常結合管道符(|)來使用它,即在前面命令執行的結果中查找包含相關字符串的內容。例如:

$ ps -ef|grep redis

ps -ef用于查看系統進程情況,但是它列出的結果很多,如果我們只想看到自己需要的,則通過管道符,用grep進行過濾搜索,例如搜索redis相關的進程,最后它只會列出和redis相關的進程了:

$ ps -ef|grep redis

root 10748 10733 0 21:14 pts/21 00:00:00 redis-server *:6379

root 10754 10733 0 21:14 pts/21 00:00:00 grep –color=auto redis

那么如果要排除某些不相關信息呢?我們可以使用-v參數

$ ps -ef|grep redis |grep -v auto

root 10748 10733 0 21:14 pts/21 00:00:00 redis-server *:6379

這樣一來,包含auto相關的結果就不會出現在最終結果里了。

如果只想統計結果數量呢?我們可以結合-c(count)參數:

$ ps -ef|grep redis -c

2

二、文件內容搜索

好了,說完了最常見的用法,我們來看看如何搜索文件內容。實際上awk和sed在這方面也頗有經驗,不過本文的主角是grep,所以另外兩個命令暫時不涉及。我們來看幾個實例。

三、在指定文件中查找指定關鍵字

例如,要在linux_command_debug.md文件中,查找test字符串:

$ grep “test” aaa/bbb/linux_command_debug.md

int test(int a,int b)

test(a,b);

如果想要顯示指定關鍵字的行號,可以使用-n參數,例如:

$ grep -n “test” aaa/bbb/linux_command_debug.md

18:int test(int a,int b)

27: test(a,b);

四、搜索時指定或排除多個文件

前面提到了對一個文件內容進行搜索,如果是多個呢?或者不想從某些文件里搜索呢?

如果想對文件進行指定也是可以的,例如搜索所有的md結尾的文件:

$ grep -n “test” *.md

或者可以使用–exclude參數來排除某些文件,例如,查找包含test,但是排除txt文件:

$ grep -rn “test” –exclude=*.txt

搜索時就會忽略.txt結尾的文件了。

如果要排除的條件比較多,可以將要排除的條件存儲在另外一個文件里:

$ grep -rn “test” –exclude-from=skip.txt

skip.txt的內容可以是模式匹配的文件名或者具體文件名:

*.txt

test.md

這樣,以.txt結尾,以及test.md文件都不會搜索了。

除此之外,還可以排除指定目錄,它需要用到–exclude-dir參數:

$ grep -rn “test” –exclude-dir=aaa

它在搜索時將會跳過aaa目錄下的文件。

五、查找包含指定關鍵字的文件

如果要在當前目錄下所有文件查找包含“int main(void)”字符串的文件:

$ grep -rn “int main(void)”

aaa/bbb/c_main_func.md:49:int main(void)

aaa/bbb/c_main_func.md:71:int main(void) { /* … */ }

aaa/bbb/c_array.md:104:int main(void)

aaa/bbb/c_array.md:129:int main(void)

aaa/bbb/pc-lint.md:42:int main(void)

aaa/bbb/pc-lint.md:128:int main(void)

這可能是最實用的使用方法之一了。這里-r參數表示遞歸查找當前目錄的文件,-n會顯示查找位置的行號,如果只想顯示包含該指定關鍵字的文件名,可使用-l(–file-with-matches)參數:

$ grep -rln “int main(void)”

aaa/bbb/c_main_func.md

aaa/bbb/c_array.md

aaa/bbb/pc-lint.md

如果你嘗試一下就會發現,如果不帶-r參數,它會暫停,等待你從控制臺輸入,例如:

$ grep -n “test”

test

1:test

所以使用時記得帶上相關參數奧!

六、查找不包含指定關鍵字的文件

前面提到了如何查找包含某個關鍵字的文件,如果要找的是不包含該關鍵字的文件呢?

實際上只要使用-L參數即可:

$ grep -rLn “int main(void)”

(這里會顯示不包含指定關鍵字內容的文件名)

七、搜索時忽略大小寫

使用-i(–ignore-case)參數即可:

$ grep -rni “int MAIN(void)”

aaa/bbb/c_main_func.md:49:int main(void)

aaa/bbb/c_main_func.md:71:int main(void) { /* … */ }

aaa/bbb/c_array.md:104:int main(void)

aaa/bbb/c_array.md:129:int main(void)

aaa/bbb/pc-lint.md:42:int main(void)

aaa/bbb/pc-lint.md:128:int main(void)

八、搜索顯示不包含指定關鍵字的行

前面的大部分例子都是顯示符合條件的行,如果要顯示不符合條件的行呢?可以用我們前面提到的-v參數:

$ grep -rnv “int main(void)”

(內容較多,未顯示)

從結果中就會發現,它會展示出包含指定關鍵字的文件,但是展示的是不包含該關鍵字的行。

九、顯示指定關鍵字前后內容

假如你需要查看包含指定關鍵字行附近的行,前面的方式是沒有辦法看到的,不過我們可以用-A(–after-context=)和-B(–before-context=)參數來顯示前后的行:

$ grep -rn “int main(void)” -A 1 -B 1

aaa/bbb/c_array.md-103-}

aaa/bbb/c_array.md:104:int main(void)

aaa/bbb/c_array.md-105-{

(其他內容省略)

通過最后加上-A和-B參數,顯示了指定關鍵字前后的行,這在日志搜索分析時非常有用。

十、指定規則文件進行搜索

如果有多個搜索關鍵字怎么處理呢?我們可以把關鍵字寫在一個文件,搜索時指定文件即可,例如規則文件為key.txt:

int main(void)

test

從指定文件中搜索上面的關鍵字:

$ cat filename |grep -f key.txt

這樣結果就會顯示匹配key.txt文件中所有關鍵字的行,非常適合用于多個條件的搜索。

十一、正則表達式搜索

看完前面的內容,是不是還沒有感受到grep的強大?grep的另一個強大之處是,它的搜索支持正則表達式,例如查找文本行以t開頭,以t結尾的文件:

$ grep -rn ^t.*t$

key.txt:2:test

aaa/bbb/c_operate_redis_start.md:68:typedef struct Stu_Info_Struct

aaa/bbb/c_operate_redis_start.md:101:typedef struct Stu_Info_Struct

其中^t,表明以t開頭,t$表明以t結尾,如果需要使用擴展的正則表達式進行搜索,可使用egrep命令。關于正則表達式的寫法,本文不做詳細介紹。

總結

在內容搜索方面,grep常常能夠助我們一臂之力,因此掌握grep的使用也是linux學習不可缺少的一部分,當然我們不需要完全記住每個參數的作用,但我們至少知道有這樣的參數,并且在需要時能夠快速查詢到。本文常用參數如下:

· -v #顯示不包含匹配關鍵字的所有行。

· -l #顯示包含匹配關鍵字的文件

· -L #顯示不包含匹配關鍵字的文件

· -r #遞歸搜索

· -i #忽略大小寫

· -n #顯示關鍵字所在行號

· -A n #顯示關鍵字后n行

· -B n #顯示關鍵字前n行

· –exclude #搜索時排除某些文件

· –exclude-dir #搜索時排除某些目錄

· -f #指定規則文件進行搜索

以上就是小編今天為大家分享的關于Linux系統中查找文本的技巧你都掌握哪些?的文章,希望本篇文章為大家介紹的Linux命令能夠對小伙伴們有所幫助。如果你想要了解更多Linux相關知識記得關注浙江11选5任3遗漏官網!最后祝愿小伙伴們工作順利!

【免責聲明:本文圖片及文字信息均由小編轉載自網絡,旨在分享提供閱讀,版權歸原作者所有,如有侵權請聯系我們進行刪除?!?/p>

相關新聞

聯系我們

400-080-6560

在線咨詢:點擊這里給我發消息

郵件:[email protected]

工作時間:周一至周日,09:00-18:30

QR code