Day05 egrep 正規表示式 sed

2021-09-20 23:42:19 字數 2702 閱讀 1330

以行為單位,逐行進行處理。預設只輸出與表示式相匹配的文字行

egrep [選項] '正規表示式' 檔案...

前置命令 | egrep [選項] '正規表示式'

忽略大小寫

條件取反

統計匹配的行數

egrep -c "." /etc/passwd#統計passwd有多少行

靜默,不輸出任何資訊。可通過$?看結果是否正確

顯示出匹配結果所在的行號

只輸出匹配的內容,不是一行

輸出匹配key關鍵字及關鍵字下面的n行

輸出匹配key關鍵字及關鍵字上面的n行

輸出匹配key關鍵字及關鍵字上下的n行

正規表示式使用一串特殊符號來描述有共同屬性的的資料,一共有11個符號。

它相當於計算機世界裡面的英語,即計算機裡面的通用語言!

優點:相容性強

缺點:書寫麻煩

優化基本正則、新增新的元字元。

優點:書寫簡單

缺點:相容性差,grep就不支援

stream editor,流式編輯器。

非互動,基於模式匹配過濾及修改文字。一行一行讀取,逐行處理,並將結果輸出到螢幕。可實現對文字的輸出、刪除、替換、複製、剪下、匯入、匯出等各種操作。

sed [選項] '編輯指令' 檔案

前置命令 | sed [選項] '編輯指令'

選項:n,r,i

編輯指令:[定址符]處理動作

定址符:[條件1[,條件2]]

條件:行號或者/正則/

處理動作:p,d,s,a,i,c,r,w,h,h,g,g

舉例:sed -n '/^root/p' /etc/passwd #列印passwd檔案中以root開頭行

遮蔽預設輸出

支援擴充套件正規表示式,若與其他選項共用,必須作為首個選項

對原始檔進行實際操作

同時對a.txt做三個操作

列印sed '3,5p' a.txt

列印a.txt的第3行,第5行

刪除替換關鍵字

在行號下面插入新的一行,如果行號為2,那麼插入的行就是第3行

還可以插入多行,行之間用"\"連線

sed -i '1askip-networking' /etc/my.cnf#在第一行後面插入新行,內容為skip-networking

替換行號所在的一行,原來的行變成下一行,如果行號為2,那麼插入的行就變成了第2行,原來的行變成了第3行

整行替換

sec '1c string' #把第一行替換為string

sed 3r c.txt

讀取c.txt檔案,把內容插入第3行之後

sed 1,3w c.txt#把1-3行另存為c.txt檔案

sed 'w a.txt' c.txt#全文複製c.txt的內容到a.txt

sed複製貼上功能

模式空間:存放當前處理的行,將處理結果輸出。若當前行不符合處理條件,則原樣輸出。處理完當前行之後再讀入下一行

保持空間:作用類似於貼上板,預設存放乙個空行(\n)

h命令的功能:拷貝模式空間的內容,追加貼上到保持空間。保持空間裡面的空行不會被覆蓋

h命令的功能:拷貝模式空間的內容,覆蓋貼上到保持空間。保持空間裡面的空行被覆蓋

g命令的功能:拷貝保持空間的內容,追加貼上到模式空間

g命令的功能:拷貝保持空間的內容,覆蓋貼上到模式空間

示例:sed '1,3h;$g' reg.txt #把1-3行的內容追加貼上到檔案末尾

sed '1h;1d;$g' reg.txt #把第1行剪下到檔案末尾

sed '1h;2h;1,2d;$g' reg.txt #把1,2行剪下,貼上到原第3行後面

替換每行的第1個old為new

替換每行的第3個old為new

替換全部的old為new

()保留,複製

\貼上最多可以記住9個

素材檔案test.txt

ni hao nb

welcome to beijing

把第乙個字元和最後乙個字元對調

sed -r 's/^(.)(.*)(.)$/\3\2\1/' test.txt

把第乙個字元括起來,把中間任意字元括起來,再把最後乙個字元括起來。這樣就有3個括號,序號從1-3,把3和1對調就實現了

把第二個字元和倒數第二個字元對調

sed -r 's/^(.)(.)(.*)(.)(.)$/\1\4\3\2\5/' test.txt

把doc替換為docs

將4-7行注釋掉

輸出第4行及後面的10行,一共11行

刪除最後一行

刪除全部空行

刪除不包含xml的行。!表示取反

查詢能夠登入系統的使用者名稱

a=sed -n /bash$/s#:.*##p /etc/passwd

for i in $a

dop1=grep "$i" /etc/shadow

p2=$

p3=$

echo $p3

done

egrep 正規表示式

egrep 正規表示式 用正規表示式在檔案或輸入中搜尋匹配的字串,並列印出匹配的行。egrep匹配之前,會刪除每行結尾的換行符。grep option pattern file option 是選項,如 i 匹配時忽略大小寫 pattern 是正規表示式,需要用單引號擴起來 file 是檔案,可以同...

擴充套件正規表示式 egrep

grep 命令僅支援基礎正規表示式,如果使用擴充套件正規表示式,需要使用 egrep 或 awk 命令。這裡我們直接使用 egrep 命令。egrep 命令與 grep 命令的用法基本相似。egrep 命令是乙個搜尋檔案獲得模式,使用該命令可以搜尋檔案中的任意 字串和符號,也可以搜尋乙個或多個檔案的...

egrep及擴充套件正規表示式

正規表示式 basic regexp 基本 extended regexp 擴充套件 grep 使用基本正規表示式定義的模式來過濾文字的命令 e 使用擴充套件正規表示式 a after 後 行 b before 前 行 c 前後各 行 擴充套件正規表示式 字元匹配 匹配任意單個字元 匹配指定範圍內的...