【Linux高频命令专题(24)】grep
生活随笔
收集整理的這篇文章主要介紹了
【Linux高频命令专题(24)】grep
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
簡述
Linux系統(tǒng)中g(shù)rep命令是一種強大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達(dá)式版本,它的使用權(quán)限是所有用戶。
grep的工作方式是這樣的,它在一個或多個文件中搜索字符串模板。如果模板包括空格,則必須被引用,模板后的所有字符串被看作文件名。搜索的結(jié)果被送到標(biāo)準(zhǔn)輸出,不影響原文件內(nèi)容。
grep可用于shell腳本,因為grep通過返回一個狀態(tài)值來說明搜索的狀態(tài),如果模板搜索成功,則返回0,如果搜索不成功,則返回1,如果搜索的文件不存在,則返回2。我們利用這些返回值就可進(jìn)行一些自動化的文本處理工作。
命令格式
grep [option] pattern file
命令參數(shù)
-a --text #不要忽略二進(jìn)制的數(shù)據(jù)。 -A<顯示行數(shù)> --after-context=<顯示行數(shù)> #除了顯示符合范本樣式的那一列之外,并顯示該行之后的內(nèi)容。 -b --byte-offset #在顯示符合樣式的那一行之前,標(biāo)示出該行第一個字符的編號。 -B<顯示行數(shù)> --before-context=<顯示行數(shù)> #除了顯示符合樣式的那一行之外,并顯示該行之前的內(nèi)容。 -c --count #計算符合樣式的列數(shù)。 -C<顯示行數(shù)> --context=<顯示行數(shù)>或-<顯示行數(shù)> #除了顯示符合樣式的那一行之外,并顯示該行之前后的內(nèi)容。 -d <動作> --directories=<動作> #當(dāng)指定要查找的是目錄而非文件時,必須使用這項參數(shù),否則grep指令將回報信息并停止動作。 -e<范本樣式> --regexp=<范本樣式> #指定字符串做為查找文件內(nèi)容的樣式。 -E --extended-regexp #將樣式為延伸的普通表示法來使用。 -f<規(guī)則文件> --file=<規(guī)則文件> #指定規(guī)則文件,其內(nèi)容含有一個或多個規(guī)則樣式,讓grep查找符合規(guī)則條件的文件內(nèi)容,格式為每行一個規(guī)則樣式。 -F --fixed-regexp #將樣式視為固定字符串的列表。 -G --basic-regexp #將樣式視為普通的表示法來使用。 -h --no-filename #在顯示符合樣式的那一行之前,不標(biāo)示該行所屬的文件名稱。 -H --with-filename #在顯示符合樣式的那一行之前,表示該行所屬的文件名稱。 -i --ignore-case #忽略字符大小寫的差別。 -l --file-with-matches #列出文件內(nèi)容符合指定的樣式的文件名稱。 -L --files-without-match #列出文件內(nèi)容不符合指定的樣式的文件名稱。 -n --line-number #在顯示符合樣式的那一行之前,標(biāo)示出該行的列數(shù)編號。 -q --quiet或--silent #不顯示任何信息。 -r --recursive #此參數(shù)的效果和指定“-d recurse”參數(shù)相同。 -s --no-messages #不顯示錯誤信息。 -v --revert-match #顯示不包含匹配文本的所有行。 -V --version #顯示版本信息。 -w --word-regexp #只顯示全字符合的列。 -x --line-regexp #只顯示全列符合的列。 -y #此參數(shù)的效果和指定“-i”參數(shù)相同。常用范例
# 查找指定進(jìn)程(這條命令本身也會形成一個進(jìn)程) ps -ef | grep svn# 查找指定進(jìn)程(-c 前后都可以) ps -ef|grep svn -c ps -ef|grep -c svn# 從文件中讀取關(guān)鍵詞進(jìn)行搜索 cat config.php | grep -f object.txt // object文件是需要檢索的關(guān)鍵詞組合(以換行分割)# 從文件中讀取關(guān)鍵詞進(jìn)行搜索 且顯示行號 cat config.php | grep -nf object.txt // 注意n和f的位置不能調(diào)換# 從文件中查找關(guān)鍵詞 grep 'api' config.php // 注意是區(qū)分大小寫的# 還可以從多個文件中查找 grep 'linux' test.txt test2.txt[root@localhost test]# grep -n 'linux' test.txt test2.txt test.txt:1:hnlinux test.txt:4:ubuntu linux test.txt:7:linuxmint test2.txt:1:linux [root@localhost test]# grep 'linux' test.txt test2.txt test.txt:hnlinux test.txt:ubuntu linux test.txt:linuxmint test2.txt:linux# grep不顯示本身進(jìn)程 (加-v就是顯示除匹配之外的) ps aux | grep ssh | grep -v "grep"# 顯示包含ed或者at字符的內(nèi)容行 (不加-E就按字符串搜索,加了按正則搜索) [root@localhost test]# cat test.txt |grep -E "ed|at" redhat Redhat# 輸出非u開頭的行內(nèi)容 cat test.txt |grep ^[^u]# 顯示當(dāng)前目錄下面以.txt 結(jié)尾的文件中的所有包含每個字符串至少有7個連續(xù)小寫字符的字符串的行 grep '[a-z]\{7\}' *.txt# 搜索當(dāng)前目錄以及子目錄下的js文件中 grep -iR --include="*.js" ".proof-imgs a"轉(zhuǎn)載于:https://www.cnblogs.com/nixi8/p/6728719.html
總結(jié)
以上是生活随笔為你收集整理的【Linux高频命令专题(24)】grep的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android作业(Activitiy)
- 下一篇: 个人NABCD