1. 程式人生 > >sed的用法與例項介紹

sed的用法與例項介紹

我們先編寫一個小文件,用於後期舉例使用。

[[email protected] study]$ cat SedDemo.txt 
This is a sed text.
I am beautyful.
You are not beautyful.
He is also not beautiful.
Hei Hei.
Are you laugh?
No, you can not do that.
Are you sad?
Oh, It is very good.


sed 替換

sed [-e] 'instruction' file
[]:表示可以有也可以沒有
-e:只有在有多個命令時才需要使用-e選項,他告訴sed將下一個引數解釋為指令。

sed 's/beautyful/not beautyful/' SedDemo.txt:把所有的 beautyful 替換為 not beautyful
這裡寫圖片描述

多重指令的實現方式
(1)使用分號相隔 sed 's/not beautyful/beautyful/; s/Hei/yeah/' SedDemo.txt
這裡寫圖片描述
(2)在每個指令前放置-e
這裡寫圖片描述
(3)使用shell的分行指令功能

[danni@vm-xxx study]$ sed '
> s/not beautyful/beautyful/
> s/Hei/yeah/' SedDemo.txt 

這裡寫圖片描述

sed 指令碼檔案
當命令很少的時候,我們採取上述直接在命令列輸入是可行的。但是當命令很長的時候,再輸入這麼長的指令碼是不切合實際的。不過,我們可以通過建立指令碼檔案,吧要執行的命令書寫在指令碼檔案中即可。
通過 -f

選項來指定命令列上的指令碼檔案的名字:sed -f scriptfile file ,scriptfile 即編寫的指令碼檔案,file 即要操作的文字檔案
編寫指令碼檔案:vim SedScript

[danni@vm-xxx study]$ cat SedScript 
s/not beautyful/beautyful/
s/Hei/yeah/

執行指令碼檔案: sed -f SedScript SedDemo.txt

[[email protected] study]$ sed -f SedScript SedDemo.txt 
This is a sed text.
I am beautyful.
You are beautyful.
He is
also beautyful. yeah Hei. Are you laugh? No, you can not do that. Are you sad? Oh, It is very good.

sed預設輸出是輸出到終端,如果想把sed的輸出重定向到另一個程式中,需要在後面指定一個I/O重定向符號。
sed -f scriptfile file > newfile