sed的用法與例項介紹
阿新 • • 發佈:2018-11-24
我們先編寫一個小文件,用於後期舉例使用。
[[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