sed (Stream EDitor)是一個強大而簡單的文字解析轉換工具,可以讀取文字,並根據指定的條件對文字內容進行編輯(刪除替換,新增,移動等),最後輸出所有行或者僅輸出處理的某些行。
在所有的檔案內容都被處理完成之前,上述過程將重複執行,直至所有內容被處理完。
注:預設情況下所有的sed命令都是在模式空間內執行的,由此輸入的檔案並不會發生任何變化,除非是用重定向儲存輸出。
[root@server2 ~]# nl test.txt | sed -n 'p'
[root@server2 ~]# nl test.txt | sed -n '4p'
[root@server2 ~]# nl test.txt | sed -n '3,5p
[root@server2 ~]# nl test.txt | sed -n 'n;p'
[root@server2 ~]# nl test.txt | sed -n 'p;n'
[root@server2 ~]# nl test.txt | sed -n '1,6{n;p}'
[root@server2 ~]# nl test.txt | sed -n '3,9{p;n}'
[root@server2 ~]# nl test.txt | sed -n '6,${n;p}'
[root@server2 ~]# sed -n '/the/p' test.txt
[root@server2 ~]# nl test.txt | sed -n '3,/the/p'
[root@server2 ~]# sed -n '/the/=' test.txt
[root@server2 ~]# sed -n '/^PI/p' test.txt
[root@server2 ~]# sed -n '/[0-9]$/p' test.txt
[root@server2 ~]# sed -n '/\<home\>/p' test.txt
[root@server2 ~]# grep 'home' test.txt
[root@server2 ~]# nl test.txt | sed '5d'
[root@server2 ~]# nl test.txt | sed '2,4d'
僅在外部輸出刪除,不會對原始檔產生影響
[root@server2 ~]# nl test.txt | sed '/home/!d'
3 The home of Football on BBC Sport online.
[root@server2 ~]# sed '/^[a-z]/d' test.txt
[root@server2 ~]# sed '/\.$/d' test.txt
[root@server2 ~]# vi test.txt
[root@server2 ~]# sed '/^$/d' test.txt
[root@server2 ~]# sed 's/the/THE/' test.txt
[root@server2 ~]# sed 's/the/THE/g' test.txt
[root@server2 ~]# sed 's/l/L/2' test.txt
[root@server2 ~]# sed 's/o//g' test.txt
[root@server2 ~]# sed 's/^/#/' test.txt
[root@server2 ~]# sed 's/$/EOF/' test.txt
[root@server2 ~]# sed '/the/s/^/#/' test.txt
[root@server2 ~]# sed '/the/s/o/O/g' test.txt
[root@server2 ~]# sed '/the/{H;d};$G' test.txt
[root@server2 ~]# sed '1,4{H;d};16G' test.txt
[root@server2 ~]# sed '/the/w out.file' test.txt
[root@server2 ~]# ls -lh
[root@server2 ~]# cat out.file
[root@server2 ~]# sed '/the/r /etc/hostname' test.txt
[root@server2 ~]# sed '3iNew' test.txt
[root@server2 ~]# sed '/the/aNew' test.txt
[root@server2 ~]# sed '$aNew' test.txt
(中間的\n表示換行)
[root@server2 ~]# sed '4aNew1\nnew2' test.txt
[root@server2 ~]# vi opt.list
1,5H 1到5行剪下
1,5d 1到5行刪除
17G 17行追加
[root@server2 ~]# sed -f opt.list test.txt
編寫一個指令碼,用來調整vsftpd 服務設定,要求禁止匿名使用者,但允許本地使用者
[root@server2 ~]# useradd dada
[root@server2 ~]# passwd dada
[root@server2 ~]# useradd xiaoxiao
[root@server2 ~]# passwd xiaoxiao
[root@server2 ~]# vi ftp.sh
#!/bin/bash
A=vsftpd
FTP=/etc/vsftpd/vsftpd.conf
yum -y install $A
sed -i -e '/local_enable/s/NO/YES/g' $FTP
sed -i -e '/write_enable/s/NO/YES/g' $FTP
sed -i -e 's/^#chroot_local_user=YES/chroot_local_user=YES/g' $FTP
sed -i '$aallow_writeable_chroot=YES' $FTP
sed -i -e '/listen/s/NO/YES/g' $FTP
sed -i -e '/listen_ipv6/s/YES/NO/g' $FTP
systemctl start $A
netstat -anpt | grep $A
[root@server2 ~]# chmod +x ftp.sh
[root@server2 ~]# ./ftp.sh
客戶機上安裝ftp進行存取
[root@server1 ~]# yum -y install ftp
[root@server1 ~]# ftp 20.0.0.11
Name (20.0.0.11:root): dada
ftp> exit
[root@server1 ~]# ftp 20.0.0.11
Name (20.0.0.11:root): xiaoxiao
ftp> exit
驗證成功