您好,登錄后才能下訂單哦!
擅長對數據行進行處理,sed是一種流編輯器,處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出。利用sed命令可以將數據行進行替換、刪除、新增、選取等特定工作。
sed [選項] '操作' 參數
sed [選項] -f scriptfile 參數
-e 或--expression=:表示用指定命令或者腳本來處理輸入的文本文件。
-f 或--file=:表示用指定的腳本文件來處理輸入的文本文件。
-h 或--help:顯示幫助。
-n、--quiet 或 silent:表示僅顯示處理后的結果。
-i:直接編輯文本文件。
a:增加,在當前行下面增加一行指定內容。
c:替換,將選定行替換為指定內容。
d:刪除,刪除選定的行。
i:插入,在選定行上面插入一行指定內容。
p:打印,如果同時指定行,表示打印指定行;如果不指定行,則表示打印所有內容;如果有非打印字符,則以 ASCII 碼輸出。其通常與“-n”選項一起使用。
s:替換,替換指定字符。
y:字符轉換。
sed -n 'p' test.txt 輸出所有內容
[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行的內容
sed -n '2,5p' test.txt 輸出2到5行的內容
sed -n 'p;n' test.txt 輸出所有奇數行的內容,n表示讀入下一行資料
sed -n 'n;p' test.txt 輸出所有偶數行的內容
[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行中的奇數行
此時的奇數行是原來的第二行,是按照選擇的行數的奇偶數決定的
[root@localhost ~]# sed -n '2,5{p;n}' test.txt
you are best boy
a wood cross
以上是 sed 命令的基本用法,sed 命令結合正則表達式時,格式略有不同,正則表達式以“/”包圍。例如,以下操作是 sed 命令與正則表達式結合使用的示例。
[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 輸出以數字為結尾的行
sed -n '/\<wood\>/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 '/\<wood\>/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 '/\<hello\>/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 刪除以.結尾的行
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
注意: 若是刪除重復的空行,即連續的空行只保留一個, 執行“ sed –e ‘/^$/{n;/^$/d}’test.txt”命令即可實現。其效果與“cat -s test.txt”相同,n 表示讀下一行數據。
s(字符串替換)
c(整行/整塊替換)
y(字符轉換)命令選項,常見的用法如下所示。
H,復制到剪貼板;
g、G,將剪貼板中的數據覆蓋/追加至指定行;
w,保存為文件;
r,讀取指定文件;
a,追加指定內容。
使用 sed 腳本,將多個編輯指令存放到文件中(每行一條編輯指令),通過“-f”選項來調用。
[root@localhost ~]# vi opt.list 1,5H
1,5d
17G
[root@localhost ~]# sed -f opt.list test.txt
編寫一個腳本,用來調整 vsftpd 服務配置:禁止匿名用戶,但允許本地用戶(也允許寫入)。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。