linux shell指令碼命令之grep

2021-06-22 02:14:44 字數 2853 閱讀 2979

[ grep簡介:]

grep是用來過濾含有特定字元的行, 能使用正規表示式搜尋文字, 它在資料中查詢乙個字串時, 是以正行為單位進行資料選取的.

用法: grep [cinvs] 'pattern' file

[ 常用選項:]

-c:只輸出匹配行的計數。

-i:不區分大小寫(只適用於單字元)。

-n:顯示匹配行及行號。

-s:不顯示不存在或無匹配文字的錯誤資訊。

-v:顯示不包含匹配文字的所有行。

[ 正則元字元:]

grep可以結合正規表示式使用, 下面介紹一些常用的正規表示式過濾字元的用法。

\ :轉義字元,忽略正規表示式中特殊字元的原有含義。

^ :匹配以某個字串開始的行。

$ :匹配以某個字串結束的行。

\<:匹配單詞的開始。

\>:匹配單詞的結束。

[ ]:在內某單個字元,如[a]即表示 a 符合要求。

[ - ]:屬於[ - ]所標記的範圍字元,如[a-z],即a、b、c一直到z都符合要求。

. :表示一定有1個任意字元。

* :前面字元可以出現任意次。

? :前面字元出現0次或1次。

+ :前面字元出現一次或多次。

[ 正則示例:]

1.  ^表示行開頭

grep   '^bbb'   aaa.txt  --color                 # 從檔案aaa.txt中查詢以bbb開頭的行。

2.  $表示行結尾

grep   'bbb$'   aaa.txt  --color                # 從檔案aaa.txt中查詢以bbb結尾的行。

3..表示單個字元, 它可以匹配除換行符之外的所有字元。

grep   'bbb...'   aaa.txt  --color                # 從檔案aaa.txt中查詢bbb後面含有三個字元的行, '點'可以匹配空格。

4.  * 表示它前面的那個字元可以出現任意次

grep   'bbb.*'   aaa.txt  --color                # 從檔案aaa.txt中查詢bbb後面有任意個字元的行。

5.  + 表示它前面的那個字元至少要出現一次

grep  -e  'bbb.+' aaa.txt --color              # 從檔案aaa.txt中查詢bbb後面至少會出現乙個字元的行。

6.  ? 表示它前面的那個字元可以有也可以沒有

grep -e 'bbbc?' aaa.txt --color               # 從檔案aaa.txt中查詢存在bbb或bbbc的行。

注意: grep不支援 + 、? 這兩個元字元, 如果想使用, 只能使用擴充套件的grep  (egrep 或 grep -e)

7.  [ ] 表示匹配乙個字元, 出現在[ ]裡面的字元都是或的關係

grep  '^[bb]bb'  aaa.txt  --color             # 從檔案aaa.txt中查詢以bbb或bbb開頭的行。

grep '[0-9]' aaa.txt --color                     # 從檔案aaa.txt中查詢含有數字的行

grep -p '\d' aaa.txt --color                     # 從檔案aaa.txt中查詢含有數字的行, -p表示使用perl的正規表示式

\d表示數字, \d表示非數字

\s表示空格或tab, \s表示不是空格或tab

\w表示任意字元(大小寫字母、數字、下劃線), \w表示不是字母、數字、下劃線。

注意: ^ 出現在 [ ] 外面的話表示'開頭', 如果出現在 [ ] 裡面的話表示'否定'

grep '^[^bb]..' aaa.txt  --color               # 從檔案aaa.txt中查詢不是以b或b開頭, 而且後面還有兩個字元的行。

8.  \< 匹配單詞的開頭

grep '\。

9.  \> 匹配單詞的結束

grep '\>tom' aaa.txt --color                 # 從檔案aaa.txt中查詢單詞以tom結尾的行。

10.  匹配某個單詞, 而不是某個字串的一部分

grep '\btom\b' aaa.txt --color            # 從檔案aaa.txt中查詢含有單詞tom的行, 如果是atomb之類的忽略掉

11.  用\(\)做標籤, 後面想引用就用\n (n是乙個數字), \1表示第乙個被引起來的

grep '\(tom\)...\1' aaa.txt --color        # 從檔案aaa.txt中查詢tom, 且它的後面有三個字元, 然後還有乙個tom的行. 如: tom***tom

12.  \ 表示前面的字元要出現n次

grep 'tomx\' aaa.txt --color         # 從檔案aaa.txt中查詢tomx, x要出現3次, 如: tom***

grep 'tomx\' aaa.txt --color        # 從檔案aaa.txt中查詢tomx, x至少要出現三次, 如tom*** 或 tom***x

grep 'tomx\' aaa.txt --color      # 從檔案aaa.txt中查詢tomx, x出現3次或4次, 如tom*** 或 tom***x

Linux Shell基本命令

linux shell基本命令 1.sudo su root 使使用者獲得root許可權 2.cd 返回上級目錄 3.cd 返回根目錄 4.cd etc a 進入a目錄 5.cp a b c.index.php d e 獲取root許可權之後把index.php複製到e目錄下 7.ls l 列出某一...

Linux Shell指令碼攻略筆記2之命令之樂

cat 檔案拼接 cat 1.txt 2.txt 擺脫多餘空白行 cat s ss.tst 或者tr cat ss.tst tr s n 顯示行號 n cat n ss.tst 錄屏 script t 2 timing.log a output.session exit結束 回放 scriptrep...

linux shell指令碼之if判斷

無論什麼程式語言都離不開條件判斷。shell也不例外。if list then do something here elif list then do another thing here else do something else here fi ex1 bin sh system uname ...