擅長對數(shù)據(jù)行進(jìn)行處理,sed是一種流編輯器,處理時(shí),把當(dāng)前處理的行存儲在臨時(shí)緩沖區(qū)中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區(qū)中的內(nèi)容,處理完成后,把緩沖區(qū)的內(nèi)容送往屏幕。接著處理下一行,這樣不斷重復(fù),直到文件末尾。文件內(nèi)容并沒有改變,除非你使用重定向存儲輸出。利用sed命令可以將數(shù)據(jù)行進(jìn)行替換、刪除、新增、選取等特定工作。
在呈貢等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需求定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),網(wǎng)絡(luò)營銷推廣,成都外貿(mào)網(wǎng)站制作,呈貢網(wǎng)站建設(shè)費(fèi)用合理。
sed [選項(xiàng)] '操作' 參數(shù)
sed [選項(xiàng)] -f scriptfile 參數(shù)
-e 或--expression=:表示用指定命令或者腳本來處理輸入的文本文件。
-f 或--file=:表示用指定的腳本文件來處理輸入的文本文件。
-h 或--help:顯示幫助。
-n、--quiet 或 silent:表示僅顯示處理后的結(jié)果。
-i:直接編輯文本文件。
a:增加,在當(dāng)前行下面增加一行指定內(nèi)容。
c:替換,將選定行替換為指定內(nèi)容。
d:刪除,刪除選定的行。
i:插入,在選定行上面插入一行指定內(nèi)容。
p:打印,如果同時(shí)指定行,表示打印指定行;如果不指定行,則表示打印所有內(nèi)容;如果有非打印字符,則以 ASCII 碼輸出。其通常與“-n”選項(xiàng)一起使用。
s:替換,替換指定字符。
y:字符轉(zhuǎn)換。
sed -n 'p' test.txt 輸出所有內(nèi)容
[root@localhost ~]# sed -n 'p' test.txt
the football
you are best boy
PI=3.1415926535897
a wood cross
hello.
the boy
sed -n '2p' test.txt 輸出第2行的內(nèi)容
sed -n '2,5p' test.txt 輸出2到5行的內(nèi)容
sed -n 'p;n' test.txt 輸出所有奇數(shù)行的內(nèi)容,n表示讀入下一行資料
sed -n 'n;p' test.txt 輸出所有偶數(shù)行的內(nèi)容
[root@localhost ~]# sed -n 'p;n' test.txt
the football
PI=3.1415926535897
the boy
[root@localhost ~]# sed -n 'n;p' test.txt
you are best boy
a wood cross
hello.
sed -n '2,5{p;n}' test.txt 輸出2到5行中的奇數(shù)行
此時(shí)的奇數(shù)行是原來的第二行,是按照選擇的行數(shù)的奇偶數(shù)決定的
[root@localhost ~]# sed -n '2,5{p;n}' test.txt
you are best boy
a wood cross
以上是 sed 命令的基本用法,sed 命令結(jié)合正則表達(dá)式時(shí),格式略有不同,正則表達(dá)式以“/”包圍。例如,以下操作是 sed 命令與正則表達(dá)式結(jié)合使用的示例。
[root@localhost ~]# sed -n '/the/p' test.txt 輸出包含the的行
the football
the boy
sed -n '4,/the/p' test.txt 輸出從第四行到包含第一個the的行
[root@localhost ~]# sed -n '4,/the/p' test.txt
a wood cross
hello.
the boy
sed -n '/the/=' test.txt 輸出包含the的所在行號
[root@localhost ~]# sed -n '/the/=' test.txt
1
7
sed -n '/^PI/p' test.txt 輸出以PI開頭的行
sed -n '/[0-9]$/p' test.txt 輸出以數(shù)字為結(jié)尾的行
sed -n '/\/p' test.txt 輸出包含單詞wood的行
[root@localhost ~]# sed -n '/^PI/p' test.txt
PI=3.1415926535897
[root@localhost ~]# sed -n '/[0-9]$/p' test.txt
PI=3.1415926535897
[root@localhost ~]# sed -n '/\/p' test.txt
a wood cross
nl test.txt | sed '3d' 刪除第三行
nl test.txt | sed '3,5d' 刪除3到5行
nl test.txt | sed '/cross/d' 刪除帶有cross的行 不包含用!取反
[root@localhost ~]# nl test.txt | sed '3d'
1 the football
2 you are best boy
4 a wood cross
5 hello.
6 the boy
[root@localhost ~]# nl test.txt | sed '3,5d'
1 the football
2 you are best boy
5 hello.
6 the boy
[root@localhost ~]# nl test.txt | sed '/\/d'
1 the football
2 you are best boy
3 PI=3.1415926535897
4 a wood cross
6 the boy
sed '/^[a-zA-Z]/d' test.txt 刪除以字母開頭的行
sed '/.$/d' test.txt 刪除以.結(jié)尾的行
sed '/^$/d' test.txt 刪除空格的行
[root@localhost ~]# sed '/^[a-zA-Z]/d' test.txt
[root@localhost ~]# sed '/\.$/d' test.txt
the football
you are best boy
PI=3.1415926535897
a wood cross
the boy
[root@localhost ~]# sed '/^$/d' test.txt
the football
you are best boy
PI=3.1415926535897
a wood cross
hello.
the boy
注意: 若是刪除重復(fù)的空行,即連續(xù)的空行只保留一個, 執(zhí)行“ sed –e ‘/^$/{n;/^$/d}’test.txt”命令即可實(shí)現(xiàn)。其效果與“cat -s test.txt”相同,n 表示讀下一行數(shù)據(jù)。
s(字符串替換)
c(整行/整塊替換)
y(字符轉(zhuǎn)換)命令選項(xiàng),常見的用法如下所示。
H,復(fù)制到剪貼板;
g、G,將剪貼板中的數(shù)據(jù)覆蓋/追加至指定行;
w,保存為文件;
r,讀取指定文件;
a,追加指定內(nèi)容。
使用 sed 腳本,將多個編輯指令存放到文件中(每行一條編輯指令),通過“-f”選項(xiàng)來調(diào)用。
[root@localhost ~]# vi opt.list 1,5H
1,5d
17G
[root@localhost ~]# sed -f opt.list test.txt
編寫一個腳本,用來調(diào)整 vsftpd 服務(wù)配置:禁止匿名用戶,但允許本地用戶(也允許寫入)。