sed是一種流編輯器烛卧,它是文本處理中非常中的工具卦尊,能夠完美的配合正則表達(dá)式使用蹋嵌,功能不同凡響伏尼。處理時(shí),把當(dāng)前處理的行存儲(chǔ)在臨時(shí)緩沖區(qū)中讲竿,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區(qū)中的內(nèi)容,處理完成后庆聘,把緩沖區(qū)的內(nèi)容送往屏幕。接著處理下一行勺卢,這樣不斷重復(fù)伙判,直到文件末尾。文件內(nèi)容并沒有 改變黑忱,除非你使用重定向存儲(chǔ)輸出或者加上 -i 參數(shù)(此時(shí)處理結(jié)果不會(huì)發(fā)送值屏幕).
打印
-
打印出passwd中以bash結(jié)尾的內(nèi)容
sed -n '/bash$/p' passwd // 其中參數(shù)-n僅顯示script處理后的結(jié)果 $是匹配字符串的結(jié)束 p是sed中的打印
-
打印出passwd中以r開頭的內(nèi)容
sed -n '/^r/p' passwd // 其中參數(shù)-n僅顯示script處理后的結(jié)果 ^是匹配字符串的開始 p是sed中的打印
-
打印passwd中3-8行的內(nèi)容
sed -n '3,8p' passwd // 其中參數(shù)-n僅顯示script處理后的結(jié)果 3,8是表示范圍 p是sed中的打印
-
打印passwd中的每一行 到第五行退出
sed '5q' passwd
刪除
-
刪除passwd中以kute開頭的內(nèi)容
sed -i '/^kute/d' passwd // 其中參數(shù)-i為直接編輯文件 ^是匹配字符串的開始 d是sed的刪除命令
-
刪除passwd中包含docker內(nèi)容的行
sed -i '/docker/d' passwd // 其中參數(shù)-i為直接編輯文件 d是sed的刪除命令
-
刪除passwd中第三行的首個(gè)字符d
sed -i '3s/^d//' passwd // 將首個(gè)字符設(shè)置為空 以達(dá)到刪除字符的目的
-
刪除passwd中第三行的首個(gè)字符d
sed -ri '3s/d(.*)/\1/' passwd // 截取除首個(gè)字母之外的所有字符 以達(dá)到刪除字符的目的
-
刪除passwd中第三行的最后一個(gè)字符n
sed -ri '1s/(.*)n$/\1/' passwd // 截取除了最后一個(gè)字母之外的所有字符 以達(dá)到刪除字符的目的
-
刪除passwd中第三行的最后一個(gè)字符n
sed -i '3s/n$//' passwd // 將最后一個(gè)字符設(shè)置為空 以達(dá)到刪除字符的目的
截取
-
提取出passwd中能夠的登錄shell的用戶 并打印出用戶名和對應(yīng)的家目錄
sed -nr '/bash$/s/(.*):\w:[0-9]+:[0-9]+:.*:(.*):.*/\1 \2/p' passwd // -r 相當(dāng)于轉(zhuǎn)義字符 s替換指定內(nèi)容 ()截取的內(nèi)容 \w 匹配字母宴抚、數(shù)字勒魔、下劃線或漢字 + 重復(fù)一次或更多次 \1 自動(dòng)命名的組?
替換
-
將passwd中所有的nologin全部替換成hhh
sed -i 's/nologin/hhh/g' passwd // s//需要替換的內(nèi)容 /g 全面替換標(biāo)記
-
將passwd中1-9行的nologin全部替換成hhh
sed -i '1,9s/nologin/hhh/g' passwd // 1,9s//需要替換的內(nèi)容 /g 全面替換標(biāo)記
插入
-
在passwd中第五行上插入內(nèi)容
sed -i '5i\hello' passwd // i\ 在當(dāng)前行上面插入文本
-
在passwd中第6行下追加內(nèi)容
sed -i '6a\hello' passwd // a\ 在當(dāng)前行下面插入文本
-
將passwd第五行修改為hello world
sed -i '5c\hello world' passwd // c\ 把選定的行改為新的文本
-
在passwd每一行的行首添加字符#
sed -i 's/^/#&/g' passwd // & 已匹配字符串標(biāo)記
-
在passwd1-5行的行首添加字符#
sed -i '1,5s/^/#&/' passwd // 1,5s 在1-5行操作
-
在passwd中每一行的最后添加#
sed -i 's/$/&#/g' passwd // $匹配字符串的最后 &已匹配字符串標(biāo)記
-
在passwd最后一行后插入一行
sed -i '$a\qyeyeyowowo' passwd // $匹配最后 a\ 在當(dāng)前行下面插入文本
-
在passwd第一行前面插入一行
sed -i '1i\qyeyeyowowo' passwd // 1i\ 第一行的上面追加新的文本
轉(zhuǎn)換
-
將字符串中的abcde轉(zhuǎn)換為12345
sed -i 'y/abcde/12345/' file // y表示把一個(gè)字符翻譯為另外的字符(但是不用于正則表達(dá)式)
?