正則表達式

                                        正則表達式

正則表達式是用來處理字符串的,可以用一些特定字符來描述字符串裏字符出現的規則,從而匹配,提取或者替換符合某一個規則的字符串。

通過特殊字符進行匹配一段字符串

正則表達式:

標準字符與元字符(特殊字符)構造

grep可以使用基礎正則表達式,處理行

[]內爲"或"只能出現一個

grep -n 'sh[io]rt' test.txt //-n顯示行號

[^w]

grep -n '[^w]oo' test.txt //匹配三個字母,不是woo就可以

grep -n '[^a-z]oo' test.txt //oo前不是小寫字母

grep -n '[0-9]' test.txt //匹配單一數字

grep -n '^[^a-Z]' test.txt //不已a-Z開頭的行

"."表示匹配一個任意字符

grep -n 'w..d' a.txt

"":號前面的字符出現0次或多次

grep -n 'abc*' a.txt //可以匹配 ab abc abcc abcc……

".*" :匹配任意長度任意字符

grep -n "w.*p" a.txt

{n}:大括號前字符出現n次 {n,m}:大括號前的字符出現n到m次 {n,}:至少出現n次

grep -n "o{2,5}" a.txt // "\"表示轉義

擴展正則表達式

"+":+號前字符至少出現1次

egrep -n "wo+d" a.txt //匹配最小爲 wod

"?":問號的字符出現一次或0次

egrep -n "bes?t" a.txt

"|":表示"或"

egrep "of|is|on" a.txt

():以|進行分割逐個匹配

egrep "t(a|e)st" a.txt

()+:括號內的一串字符出現一次或多次

egrep "A(xyz)+C" a.txt

sed文本編輯工具:在過濾的時候進行更改文件(常用於shell腳本)

-n 顯示修改後的行

sed -n '3,5p' test.txt //3到5行 p打印出來

打印奇數行

nl test.txt | sed -n 'p;n' //n下一行

打印偶數行

nl test.txt | sed -n 'n;p'

從第10行開始打印

nl test.txt | sed -n '10,${p;n}'

打印包含the的行 正則表達式用//括起來

sed -n '/the/p' test.txt

從第四行開始打印包含the的行

sed -n '4,/the/p' test.txt

=表示打印行號

sed -n '/the/=' test.txt

以PI開頭

sed -n '/^PI/p' test.txt

精確匹配一個單詞

sed -n '/\<wood\>/p' test.txt

刪除包含cross的行

nl test.txt | sed '/cross/d'

刪除以.結尾的行

sed '/.$/d' a.txt

替換

sed 's/the/THE/' a.txt

在每行的前面加入一個#號

sed -i 's/^/#/' b.txt

刪除第三行的#號

sed -i '3s/#//' b.txt

剪切the行,粘貼到最後一行

sed '/the/{H;d};$G' a.txt //H 複製 G 粘貼

過濾並保存到abc.txt

sed '/the/w abc.txt' test.txt //w保存

追加abc.txt裏的內容追加到每個the行的下面

sed '/the/r abc.txt' test.txt //r追加

awk文本編輯工具

sed逐行進程操作,awk可以基於段進行操作

以":"進行分割,打印第1段和第3段 逐行操作

awk -F ':' '{print $1 $3}' /etc/passwd //默認以空格進行分割

awk內建變量

FS:分割符,默認爲空格

NF:正在操作的行分了幾個字段

NR:當前操作的行號

$0:當前操作行的內容

$n:當前操作的是第幾段

FILENAME:操作的文件名

RS:基於什麼判斷行數,\n回車換行

打印1~3行

awk 'NR==1,NR==3{print}' test.txt

打印行號大於等於1小於等於3的行

awk 'NR>=1&&NR<=3 {print}' test.txt

統計文件內以/bin/bash結尾的行

awk 'BEGIN {x=0}; /\/bin\/bash$/{x++};END {print x}' /etc/passwd

感謝閱讀

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