標籤:linux 字串 運算式 單詞 file
一、grep,egrep,fgrep
1)grep
格式:grep [選項] [模式] [檔案名稱]
常用選項:-n:顯示行號和匹配的行
-v:反向匹配
-c:不顯示匹配的行,只顯示匹配的行數
-i:忽略大小寫
-r:遞迴搜尋
-E:支援擴充Regex
-P:支援PerlRegex
-F:不支援Regex,將模式按字面意義匹配
樣本:
grep樣本
|
說明
|
grep ‘\<Tom>\‘ file
|
顯示包含單詞Tom的行
|
grep ‘Tom Jerry‘ file
|
顯示包含‘Tom Jerry’的行
|
grep ‘^Tommy‘ file
|
顯示以Tommy字串開始的行
|
grep ‘\.bak$‘ file
|
顯示行的末尾以.bak結束的行
|
grep ‘[Pp]hoto‘ *
|
顯示當前工作目錄的所有檔案名稱中包含photo或Photo的檔案名稱
|
grep ‘[A-Z]‘ file
|
顯示至少包含1個大寫字母的行
|
grep ‘[0-9]‘ file
|
顯示至少包含1個數位行
|
grep ‘[A-Z]...[0-9]‘ file
|
顯示以大寫字母開始、以數字結束的5個字串模式的行
|
grep -w ‘[tT]est‘ file
|
顯示包含但是Test和test的行
|
grep -s ‘TY Kim‘ file |
搜尋包含‘TY Kim‘的行,但是不顯示在螢幕
|
grep -v ‘Jerry‘ file |
顯示不包含‘Jerry‘的所有行
|
grep -i ‘sam‘ file |
忽略大小寫字母,顯示所有包含sam的行
|
grep -l ‘Dear Boss‘ * |
顯示包含‘Dear Boss‘的所有檔案目錄
|
grep -n ‘Tom‘ file |
顯示包含Tom的行,同時顯示行號
|
grep "$name" file |
顯示所有擁有name變數值的行。使用變數時必須使用雙引號(" ")
|
grep ‘$5‘ file
|
顯示包含‘$5‘字元的行。單引號內的$字元被識別為其本身
|
ps aux | grep ‘^*multi‘
|
將ps的顯示結果通過管道符和grep串連,顯示行首有空格並包含multi的所有行
|
2)egrep
egrep是grep的擴充,可以使用其他的萬用字元
+:有1個以上的字元
?:有0個或1個字元
a|b:匹配a或b的字元
():字元組
3)fgrep
類似於grep,將特殊字元及$字元識別為其本身
二、sed
非互動式文字檔編輯器
常用選項:
-n:取消預設輸出
-e:允許執行多個指令碼
-i:直接修改原始檔案
-r:使用擴充Regex
樣本:
sed樣本
|
含義
|
8d
|
刪除輸入的第8行
|
/^$/d
|
刪除所有空行
|
1,/^$/d
|
從第一行起 刪除直到 發現空行
|
/Jones/p
|
只顯示包含“Jones”的行(使用-n選項)
|
s/Windows/Linux/
|
在輸入的各行用“Linux”替換第一次出現的“Windows”
|
s/Windows/Linux/g |
在輸入的各行用“Linux”替換每次出現的“Windows” |
s/*$//
|
刪除所有行尾出現的空格
|
s/00*/0/g
|
以0替換所有連續出現的0
|
/GUI/d
|
刪除包含“GUI”的所有行
|
s/GUI//g
|
在輸入的各行刪除“GUI”三個字元
|
本文出自 “MyLinux” 部落格,請務必保留此出處http://mylinuxlife.blog.51cto.com/4706737/1631181
linux學習筆記-第十二課-Shell指令碼之Regex(一)