sed命令

 sed簡介linux

sed(Stream EDitor)linux中是一種流編輯器。vim也是linux中一種編輯器。相比來講,最明顯的區別,sed修改編輯文件不須要直接打開文件進行編輯,vim則須要打開文件直接編輯修改。vim

簡單舉例以下:
要修改的文件:
[root@server sed]# cat a.txt
aaa
bbb
ccc
ddd
eee
[root@server sed]#
最終須要實現的效果(將ccc替換成rep,而且注意之間有空隔,ccc之間沒有)
[root@server sed]# cat a.txt
aaa
bbb
rep rep rep
ddd
eee
[root@server sed]
1)sed方式:
[root@server sed]# sed 's#c#rep #g' a.txt
aaa
bbb
rep rep rep
ddd
eee
[root@server sed]#
此時屏幕雖然顯示第3行爲rep,可是真正的文件內容仍是沒有修改.
這個須要添加一個sed選項 -i。能夠嘗試一下。
2)vim方式
[root@server sed]# vim a.txt
aaa
bbb
ccc
ddd
eee
鼠標移動到ccc位置,將ccc修改爲rep rep rep
這時候已經體會到了兩個小區別:
(1)vim首先須要先vim 文件名後進入文件後進行編輯,移動到位置進行內容替換;sed不用編輯文件,直接在命令行直接可使用命令修改
(2)若是對於修改文件中多個內容的話,sed的效率更高
接下來開始學習使用sed,由易到難,由淺入深。多多關注更新
一 基礎
1.sed 命令格式
sed [選項] '命令' 文件名
如:sed -i 's#要替換內容#替換後的內容#g' 文件名
2.
(1)經常使用選項c#

-n (silent或quiet) 取消默認輸出,只顯示匹配到的內容所在的行
-e 可同時執行多個命令
-r 支持擴展的表達式
-f (--file) 能夠將sed的多個命令寫在一個文件裏,直接使用-f指定文件名
-i 直接修改文件內容
(2)經常使用命令
s 替換
d 刪除
a 在指定行下面插入內容
i 在指定行上面插入內容
c 把選定的行改爲後邊要指定的內容
w filename 寫並追加匹配的內容到filename末尾。 編輯器

(3)sed替換標記
p 打印文件內容 通常與-n一塊兒使用,只打印匹配到的行
g 全局替換

3.示例(Practice)
如下示例源文件均爲:
[root@server sed]# cat a.txt
aaa
bbb
ccc
ddd
eee
[root@server sed]# 學習

(1)替換s(將ccc修改爲rep):
[root@server sed]# sed 's#c#rep #' a.txt
aaa
bbb
rep cc
ddd
eee
這個沒有加g,能夠看出,sed只修改了第一個匹配到的內容。其餘的內容沒有修改
[root@server sed]# sed 's#c#rep #g' a.txt
aaa
bbb
rep rep rep
ddd
eee
[root@server sed]#
這個加g,表明全局替換,將替換全部的c的字符
(2)刪除(注意對比不一樣的例子,表達的不一樣的功能)此時屏幕顯示刪除成功,可是文件內容仍是沒刪除,由於沒有添加修改文件內容的選項-i
刪除文件中的第2行
[root@server sed]# sed '2d' a.txt
aaa
ccc
ddd
eee
[root@server sed]#
刪除文件中第2至4行
[root@server sed]# sed '2,4d' a.txt
aaa
eee
[root@server sed]#
刪除文件中匹配到ee的行
[root@server sed]# sed '/ee/d' a.txt
aaa
bbb
ccc
ddd
[root@server sed]#
(3)添加內容
在指定行上面插入內容(a)
[root@server sed]# sed '3i 123' a.txt
aaa
bbb
123
ccc
ddd
eee
[root@server sed]#
在指定行下面插入內容(i)
[root@server sed]# sed '1a 123' a.txt
aaa
123
bbb
ccc
ddd
eee
[root@server sed]#ui

(4)替換選定的行
替換第3行內容爲scottsofia
[root@server sed]# sed '3c scottfia' a.txt
aaa
bbb
scottfia
ddd
eee
[root@server sed]# 命令行

將匹配到dd的行替換爲scottsia
[root@server sed]# sed '/dd/c scottfia' a.txt
aaa
bbb
ccc
scottfia
eee
[root@server sed]#
(5)寫並追加匹配的內容到filename末尾(w)
[root@server sed]# ls
a.txt
未執行sed前,當前目錄只有一個atxt文件
[root@server sed]# sed 'w w_filename' a.txt
aaa
bbb
ccc
ddd
eee
[root@server sed]# ls
a.txt w_filename
指定sed中w後新生成一個指定的w_filename文件,同時內容以下
[root@server sed]# cat w_filename
aaa
bbb
ccc
ddd
eee
[root@server sed]#
以上先是簡單的sed入門示例,稍後會增長深刻點內容。歡迎指教。server

相關文章
相關標籤/搜索