Linux 學習筆記——正則表達式

&& 並且 成功-執行 不成功-不執行

|| 或者 成功-不執行 不成功-執行

;      (不)成功-執行


grep --color 'root' /etc/passwd 高亮

echo "alias cg='grep --clort'" >> ~/.bashrc 

-n 顯示行數

-c 計數幾行

-v 不包含keyword

-A 2 多顯示下兩行

-B 2 多顯示上兩行

-C 2 多顯示上下兩行

-r 'root' /etc/* 目錄下搜索關鍵字,含文件目錄名字,內容

-rh 不顯示最前面目錄路徑

cg '[0-9]' 1.txt

cg '[a-zA-Z]' 1.txt

cg -v '[a-zA-Z]' 1.txt 不包含

cg '^[a-z]' 1.txt 以字母開頭

cg '[^0-9]' 1.txt 不包含純的數字,不包含空行

cg '^[^0-9]' 1.txt 不以數字開頭的行,不包含空行

cg '^$' 1.txt 顯示空行

cg 'r.o' 1.txt 任意一個字符

cg 'r*o' 1.txt 0個或多個前面的字符 o也符合

cg 'r.*o' 1.txt r開頭o結果都算,中間不管什麼

cg 'r\?o' 1.txt 脫義字符  ==cg -E 'r?o'  0個或1個前面的字符

grep -E ==egrep E代替脫義 


egrep 'r+o' 1.txt 1個或多個前面的字符


+ ? () {} |需使用egrep 或者 grep -E 或者 脫義\

egrep 'root|nologin' 1.txt 或者

grep 'root' 1.txt | grep 'nologin' 並且

egrep '(rr)+' 1.txt 整體匹配 ==grep -E '(rr)+' 1.txt

egrep '(rr){1,3}' 1.txt  匹配1到3次

egrep '(rr){5}' 1.txt 匹配5次


sed 與grep 區別不支持顏色 grep所有的功能sed都支持

顯示功能,n r // p


sed -n '10'p 1.txt 打印前10行 '1,10' '3,$'

sed -n '/root/'p 1.txt 包含root的行

sed -n '/r.ot/'p 1.txt  '/r*o/' '/r.*o/'

sed -n '/r\?ot/'p 1.txt '/r\+o/' '/root\|nologin/' '/\(oo\)\+/'

sed -n '/root/p; /mail/p' passwd  顯示root或者mail的行,全含有的話,顯示多次

=== sed -n -e '/root/p' -e '/mail/p' passwd 遇上一條命令一樣

sed -n -r '/root|mail/p' passwd 不會顯示多次


r代替脫義

sed -r -n '/(oo)+/'p 1.txt 無需脫義

 '/[0-9]/' '/[^0-9]/'純數字 '/[^a-zA-Z]/'純字母 '/^$/'空行 


刪除功能,無需脫義和r,關鍵字需要//,沒有關鍵字不需要//

sed '/^$/'d 1.txt 刪除空行 '/[0-9]/' '/[a-zA-Z]/'


sed '1,19'd 1.txt 刪除1到19行 不會改變文件內容

sed -i '1,19'd 1.txt 改變文件內容 wc -l 1.txt 不推薦使用,先預覽再使用,或者cp


查找替換,與vim相似,@#

sed '1,10s/nologin/login/g' 1.txt 1到10行替換 -i 直接修改內容

sed '1,10s/\/sbin\/login/login/g' 1.txt 脫義

sed '1,10s#/sbin/login#login#g' 1.txt 無需脫義

sed '1,10s@/sbin/loing@login@g' 1.txt 無需脫義

sed 's@/sbin/loing@login@g' 1.txt  全部替換

sed 's@^.*$@login@g' 1.txt 所有行換成  &表示一整行

sed 's@^.*$@&login@g' 所有行尾增加 

sed 's@^.*$@& login@g' 多了空格

sed 's#[0-9]##g' 刪除所有數字,空 [a-zA-Z]

sed 's#[^0-9a-zA-Z]##g'刪除所有特殊字符


調換

sed -r '1,10s#(^[a-zA-Z0-9]+)(:.*:)(.*$)#\3\2\1#g' 第一段和最後一段調換位置,不包含特殊符號

sed -r 's/(^.)(.*)(.$)/\3\2\1/g' passwd 第一個字符和最後一個字符調換


awk 區別 分段 不支持顏色,不支持{ } grep sed支持{ }

顯示

awk -F ':' 'OFS=":" {print $3,$4}' passwd OFS指定分隔符


匹配

awk '/root/' passwd

awk '/root|user/' passwd 或者,不會多次顯示,無需脫義

awk '/r*o/' passwd . *. ? +

awk '/(oo)+/' passwd

awk -F ':' '$1~/r*o/' passwd 段匹配

awk -F ':' '$1~/r*o/ {print $3}' passwd 匹配後只顯示某一段

awk -F ':' '$1~/r*o/ {print $1}; $1~/mail/ {print $1}' passwd 或者,滿足多個,多次顯示

awk -F ':' '$1~/r*o|mail/ {print $1}' passwd 同上,但不會多次顯示


最後2節未更新

查找關鍵字所在的文件名

grep -r 'root' /tmp/test/ | cut -d':' -f1 | uniq > /tmp/name.txt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章