linux上sed的詳解

語法:
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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章