過濾來自乙個檔案或標準輸入匹配模式內容。除了grep外,還有egrep、fgrep。egrep是grep的擴充套件,相當於grep -e。fgrep相當於grep -f,用的少。
usage: grep [option]... pattern [file]...
支援的正則
描述-e,--extended-regexp 模式是擴充套件正規表示式(ere)
-f,--fixed-strings 模式是換行分隔固定字串
-g,--basic-regexp 模式是基本正規表示式(bre)
-p,--perl-regexp 模式是perl正規表示式
-e,--regexp=pattern 使用模式匹配,可指定多個模式匹配
-f,--file=file 從檔案每一行獲取模式
-i,--ignore-case
忽略大小寫
-w,--word-regexp 模式匹配整個單詞
-x,--line-regexp 模式匹配整行
-v,--invert-match 列印不匹配的行
輸出控制
描述-m,--max-count=num 輸出匹配的結果num數
-n,--line-number 列印行號
-h,--with-filename 列印每個匹配的檔名
-h,--no-filename 不輸出檔名
-o,--only-matching 只列印匹配的內容
-q,--quiet 不輸出正常資訊
-s, --no-messages 不輸出錯誤資訊
-r,--recursive
--include=file_pattern
--exclude=file_pattern
--exclude-from=file
--exclude-dir=pattern
遞迴目錄。
只搜尋匹配的檔案。
跳過匹配的檔案。
跳過匹配的檔案,來自檔案模式。
跳過匹配的目錄
-c,--count 只列印每個檔案匹配的行數
內容行控制
描述-b,--before-context=num 列印匹配的前幾行
-a,--after-context=num 列印匹配的後幾行
-c,--context=num 列印匹配的前後幾行
--color[=when], 匹配的字型顏色
qq群:
323779636(shell/python運維開發群)
示例:1
) 輸出b檔案中在a檔案相同的行
# grep -f a b
2) 輸出b檔案中在a檔案不同的行
# grep -v -f a b
3) 匹配多個模式
# echo
"a bc de
" |xargs -n1 |grep -e '
a' -e 'bc'
abc4) 去除空格http.conf檔案空行或開頭#號的行
5) 匹配開頭不分大小寫的單詞
# echo
"a a b c
" |xargs -n1 |grep -i a
或# echo
"a a b c
" |xargs -n1 |grep '
[aa]'a
a6) 只顯示匹配的字串
# echo
"this is a test
" |grep -o 'is'
isis
7) 輸出匹配的前五個結果
# seq
120 |grep -m 5 -e '
[0-9]'10
1112
1314
8)統計匹配多少行
# seq
120 |grep -c -e '
[0-9]'11
9) 匹配b字元開頭的行
# echo
"a bc de
" |xargs -n1 |grep '^b'
bc10
) 匹配de字元結尾的行並輸出匹配的行
# echo
"a ab abc abcd abcde
" |xargs -n1 |grep -n '
de$'
5:abcde
11) 遞迴搜尋/etc目錄下包含ip的conf字尾檔案
# grep -r '
192.167.1.1
' /etc --include *.conf
12) 排除搜尋bak字尾的檔案
# grep -r '
192.167.1.1
' /opt --exclude *.bak
13) 排除來自file中的檔案
# grep -r '
192.167.1.1
' /opt --exclude-from
file
14) 匹配41或42的數字
# seq
4145 |grep -e '
4[12]'41
4215
) 匹配至少2個字元
# seq
13 |grep -e '
[0-9]'10
1112
1316
) 匹配至少2個字元的單詞,最多3個字元的單詞
# echo
"a ab abc abcd abcde
" |xargs -n1 |grep -e -w -o '
[a-z]'ab
abc17
) 匹配所有ip
# ifconfig |grep -e -o "
[0-9]\.[0-9]\.[0-9]\.[0-9]"18
) 列印匹配結果及後3行
# seq
110 |grep 5 -a 356
7819) 列印匹配結果及前3行
# seq
110 |grep 5 -b 323
4520) 列印匹配結果及前後3行
# seq
110 |grep 5 -c 323
4567
821) 不顯示輸出
不顯示錯誤輸出:
# grep 'a
'abc
grep: abc: no such file or directory
# grep -s 'a'
abc# echo $?
2不顯示正常輸出:
# grep -q 'a'
a.txt
grep支援上一章的基礎和擴充套件正規表示式字元。
shell文字處理
最於檔案的操作以前都是用高階程式語言來操作的。今天恰好需要將乙個目錄中的檔案資訊儲存到sqlite3資料庫中 我用linux中的工具和shell來作為自己畢業設計做原型開發 下面記錄一下這裡用到的部分知識,以作備忘。用ls命令來說明 1.關於shell中的管道和重定向問題。這個知識基礎,這裡不再說了...
shell 文字處理
最近優化指令碼,將幾套指令碼合併,比如,處理nand手機的指令碼和處理emmc手機的指令碼是不一樣的,這導致我們的指令碼有很多個版本。手機側只有busybox,所以不能使用功能強大的python來處理文字。花了半天時間,發現雖然語法比較怪異,但也能簡潔的完成任務。if e proc emmc the...
shell中文字處理命令 grep命令
4.正規表示式和grep結合的例子 引數說明 c只輸出匹配行的數量 i搜尋時忽略大小寫 h查詢多檔案時不顯示檔名 l只列出符合匹配的檔名,而不列出具體的匹配行 n列出所有的匹配行並顯示行號 s不顯示不存在或無匹配文字的錯誤資訊 v顯示不包含匹配文字的所有行 w匹配整詞 x匹配整行 r遞迴搜尋,不僅搜...