語法:
sed [options] '{command}[flags]' [filename]
-e script 將腳本中指定的命令添加到處理輸入時執行的命令中 多條件,一行中要有多個操作
-f script 將文件中指定的命令添加到處理輸入時執行的命令中
-n 抑制自動輸出
-i 編輯文件內容
-i.bak 修改時同時創建.bak備份文件。
-r 使用擴展的正則表達式
! 取反 (跟在模式條件後與shell有所區別)
q 退出 w 另存
r filename讀取文件 R 讀取一行
保持前面匹配的內容 (與正則分組類似)
sed常用內部命令
a 在匹配後面添加
i 在匹配前面添加
p 打印
d 刪除
s 查找替換
c 更改
y 轉換 N D P
/s replace替換
例子:(例子很簡單,幫助互理解)
1. /s 例子:
[root@wangjianxiong ~]# echo "da xiong" |sed 's/da/xiao/'
xiao xiong
2. 在命令行中使用多個命令 -e 的例子
[root@wangjianxiong ~]# echo "da xiong" |sed -e 's/da/xiao/;s/xiong/mao/'
xiao mao
3. -f script 將文件中指定的命令添加到處理輸入時執行的命令中(和-e差不多)
[root@wangjianxiong ~]# cat a
s/da/xiao/
s/xiong/mao/
[root@wangjianxiong ~]# echo "da xiong" | sed -f a
xiao mao
4. -n顯示某行
sed -n '1p' filename #顯示第一行
sed -n '$p' filename #顯示最後一行
sed -n '1,2p' filename #顯示第一行到第二行
sed -n '2,$p' filename #顯示第二行到最後一行
[root@wangjianxiong ~]# cat b
a
b
c
d
e
[root@wangjianxiong ~]# sed -n '1p' b
a
[root@wangjianxiong ~]# sed -n '$p' b
e
[root@wangjianxiong ~]# sed -n '1,2p' b
a
b
[root@wangjianxiong ~]# sed -n '2,$p' b
b
c
d
e
5. y 轉換爲大寫
[root@wangjianxiong ~]# sed '1,3y/abc/ABC/' b
A
B
C
d
e
6. g:表示用新文本替換現有文本的全部實例;p:表示打印原始的內容;w file:將替換的結果寫入文件
[root@wangjianxiong ~]# cat c
a.a
b.b
c.c
d.d
e.e
[root@wangjianxiong ~]# sed 's/a/A/1' c
A.a
b.b
c.c
d.d
e.e
[root@wangjianxiong ~]# sed 's/a/A/g' c
A.A
b.b
c.c
d.d
e.e
[root@wangjianxiong ~]# sed '2{s/b/daxiong/;s/b/daxiong/}' c
a.a
daxiong.daxiong
c.c
d.d
e.e
[root@wangjianxiong ~]# sed '2{s/b/daxiong/}' c
a.a
daxiong.b
c.c
d.d
e.e
[root@wangjianxiong ~]# sed 's/a/A/w test' c
A.a
b.b
c.c
d.d
e.e
[root@wangjianxiong ~]# cat test
A.a
[root@wangjianxiong ~]# echo "this is a test" | sed p
this is a test
this is a test
7. d 刪除
[root@wangjianxiong ~]# sed 2d c
a.a
c.c
d.d
e.e
8. a 在匹配後面添加;i 在匹配前面添加;c 更改
[root@wangjianxiong ~]# sed '3i\daxiong' c
a.a
b.b
daxiong
c.c
d.d
e.e
[root@wangjianxiong ~]# sed '3a\daxiong' c
a.a
b.b
c.c
daxiong
d.d
e.e
[root@wangjianxiong ~]# sed '3c\daxiong' c
a.a
b.b
daxiong
d.d
e.e
9. 顯示行號 ; 統計有多少行
[root@wangjianxiong ~]# sed '=' c
1
a.a
2
b.b
3
c.c
4
d.d
5
e.e
[root@wangjianxiong ~]# sed -n "$=" c
5
10. -i 編輯文件內容
[root@wangjianxiong ~]# cat e
;www.baidu.com IN A 192.168.1.1
www.baidu.com IN A 192.168.1.2
www.baidu.com IN A 192.168.1.3
www.baidu.com IN A 192.168.1.4
[root@wangjianxiong ~]# sed -i 's/192/193/g' e
[root@wangjianxiong ~]# cat e
;www.baidu.com IN A 193.168.1.1
www.baidu.com IN A 193.168.1.2
www.baidu.com IN A 193.168.1.3
www.baidu.com IN A 193.168.1.4