grep命令備忘

1 grep簡介

NAME
       grep, egrep, fgrep, rgrep - print lines that match patterns

grep [options] PATTERN [FILE...]
grep [options] [-e PATTERN | -f FILE] [FILE...]

定義:打印匹配模式的行;

描述:Grep 能理解兩種不同版本的正則表達式語法:“basic” 和 “extended”。在
​ GNU grep 中,兩種語法可以實現的功能是沒有區別的。在其他實現中,基本
​ (basic) 正則表達式表達能力要弱一點。下面的描述適用於擴展的 (extended)
​ 正則表達式,它與基本正則表達式的區別會在最後做一個總結。

2 基本使用技巧

  • 單個文件中檢索:
grep match_pattern file_name
grep "match_pattern" file_name
  • 多個文件中檢索
grep "match_pattern" file_name1 file_name2 file_name3
  • 使用正則表達式
echo "a111b1111c11111d11111" | egrep "[1]{5}"
##
echo "a111b1111c11111d11111" | grep -E "[1]{5}"
  • 排除檢索
grep -v "match_pattern" file1
  • 檢索顏色標記
grep "match_pattern" file_name --color=auto
  • 統計匹配行數 -c
grep -c "text" file_name

3 進階技巧1-遞歸搜索文件夾(包含、排除)

#### 1 遞歸檢索匹配
grep "test" . -r -n
#### 2 只在java文件和c文件中遞歸搜索含有main()的文件
grep "main()" . -r --include *.{c,java}
#### 3 排除文件搜索
grep "main()" . -r --exclude "README"

4 進階技巧2-grep顯示選項

#### -A 顯示匹配結果後三行
grep "match_pattern" file1 -A 3
#### -B 顯示匹配結果前三行
grep "match_pattern" file1 -B 3
#### -C 顯示匹配結果前三行
grep "match_pattern" file1 -B 3 -A 3
grep "match_pattern" file1 -C 3

5 進階技巧3-靜默輸出

不會輸出任何信息,如果命令運行成功返回0,失敗則返回非0值。一般用於條件測試。

grep -q "test" filename

6 進階技巧4-檢索偏移結果

  • 計算偏移位數 -b 通常與-o合用;
fwd@fwd:~$ echo "a111b1111c11111d111111" | egrep -b -o "[1]{6}"
16:111111
  • 只打印匹配內容 -o 只顯示匹配的行中與 PATTERN 相匹配的部分。
fwd@fwd:~$ echo "a111b1111c11111d111111" | grep -E -o "[1-9]{6}"
111111

7 進階技巧5-匹配多個選項

#### 1- -e使用多個匹配項目,匹配任何一個就成功
echo "Hello! My Name is Jack" | grep -e "My" -e "Jack"

8 組合實戰1-與find何用找指定文件匹配字符串

#### 1-在當前面目錄搜索md文件,並檢索打印包含test文件的文件名和行號等信息;
find . -type f  -regex "*.md" -print0 | xargs -0 grep -Hn -i --color "test"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章