1. 程式人生 > >shell實戰訓練營Day4

shell實戰訓練營Day4

grep egrep 匹配
grep -[cinrvABC] 'word' file
grep -c 'abc' file 列出file中 包含 abc的行
grep -n 'abc' file 列出file中 包含 abc的行,並顯示行號
grep -i 'abc' file 不區分字母大小寫
grep -v '[0-9]' file 取反 ,列出不包含[0-9]的行
grep -r 'word' /dir 遍歷所有/dir下包含的word
grep -An 'abc' file (其中n為數字) 列出file中包含abc的行以及下面n行,共n+1行
grep -Bn 'abc' file (其中n為數字) 列出file中包含abc的行以及上面n行,共n+1行
grep -Cn 'abc' file (其中n為數字) 列出file中包含abc的行以及上面下面各n行,共2n+1行
grep -v '^$' file (^表示開頭,$表示結尾) 列出file中的非空行
grep -n [^0-9] file (^在括號內表示邏輯關係“非”) 列出包含數字的行
grep -n ^[^0-9] file (^在括號外表示開頭) 列出不是已[0-9]開頭的行
grep 'a.b' file ·表示任意一個字元 可以是 數字,字母,符號
grep 'ab' file

表示任意個前面的字元 (本例中表示匹配a ,包含0個a)
grep .
file 全部匹配
grep 'a{0,2}' file 匹配0個至2個a,其中\為脫義符
grep -E 'a{0,3}' file 匹配0個至3個a,使用-E引數,可以不加脫義符
egrep 'a{0,2}' file 匹配0個至2個a
egrep 'a+b' file +表示匹配+前面字元 1次 或 多次 (本例中表示匹配1個或多個a)
egrep 'a?b' file ?表示匹配?前面字元 0次 或 1次 (本例中表示匹配0個或1個a)
egrep 'abc|123' file | 表示邏輯關係或“ (本例中表示匹配abc或123)
egrep '(11){2} file 表示整體匹配,即匹配1111
注:grep命令不識別 () [] {} + | 等符號 在使用中可以配合-E引數一同使用,或者直接使用 egrep命令

sed 替換 匹配

n滿足條件 , p列印 ,d刪除, s修改原始檔,e同時執行多個表示式,r 開啟識別 + | {} 等符號

sed -n /abc/p file 列印包含abc的行
sed -nr /a{2}/ file 列印包含aa的行
sed -n '1,$' p file 列印全文
sed -e '1,3'p -e '/abc/' file 列印1至3行與包含abc的行
sed -n '/abc/'Ip 不區分大小寫匹配
sed '1,5'd file 刪除第1至5行
sed -i '1,5'd file 刪除原文第1至5行
sed 's/[A-Z]/\l&/g' file 大寫字母轉換為小寫字母
sed 's/[a-z]/\u&/g' file 小寫字母轉換為大寫字母
sed '1,5s/abc/123/g' file 將1至5行中的abc全部替換為123,若不加g,則只替換第一個
sed 's /([^:]+):(.*):([^:]+)/ \3:\2:\1/' /etc/passwd 將第一段與最後一段互換位置
sed -r 's/^/aaaa:&/g' file 在行首新增aaaa:
sed -r 's/&/bbbb:&/g' file 在行尾新增bbbb: