歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

Sed命令的基本使用

sed介紹

粘貼一段wiki的介紹:sed (stream editor) is a Unix utility that parses and transforms text, using a simple, compact programming language. sed was developed from 1973 to 1974 by Lee E. McMahon of Bell Labs, and is available today for most operating systems.

總的來說就是sed是unix類os下的文本操作工具,負責解析和轉換文本

Linux常用的文本工具

文本處理的三駕馬車grep

sed

awk

sed: stream Editor

Features

行編輯器,逐行進行分為模式空間和保留空間

逐行處理,支持模式匹配(regex)

默認不處理源文件,僅對模式空間中的進行處理

處理結束後將模式空間中的結果輸出到屏幕

Usage

sed [option] 'AddressCommond' file

Address(需要處理的行)

StartLine,endLine

比如1,100,表示1-100行

特別注意的是,可以使用

$:最後一行
/RegExp/(正則表達式)

比如: /^root/,表示以root開始的行

/pattern1/,/pattern2/
第一次被pattern1匹配到的行開始到被pattern2匹配到的行結束

LineNumber
指定某行

startLine, +N
從startLine開始向後的N行,總共是N+1行

Commonds

sed的命令很多,這裡我只列出常用的commonds
d
:刪除符合條件的行

p
:顯示符合條件的行
a \string
:在匹配的行後追加新行,內容是string

i \string
:在匹配的行前追加新行,內容是string
r FILE
:將指定的文件的內容添加到匹配的行之後

w FILE
:將指定范圍內的內容另存到指定的文件中
s /pattern/ReplaceString/修飾符
:將符合模式的字符串替換為ReplaceString(默認只替換每行中第一次被模式匹配到的串)

可以使用三個相同的字符來代替’/’,上面的字符串替換等價於

s #pattern#ReplaceString#修飾符
特別的可以使用
&:表示整個模式匹配到的字符串

修飾符:

g
:全局替換
i
:匹配時忽略大小寫

Options

-n
:靜默模式,不顯示模式空間中的內容
-r
:使用擴展的正則表達式

-i
:直接修改源文件(危險慎重使用)
-e 處理 -e 處理
:連續進行sed的處理

-f
:指定處理腳本另外可以使用類似
sed -f SCRIPTFILE file
(將SCRIPTFILE中的每個命令作用在file上)

Examples

sed ‘1,2d’ /etc/fstab (刪除/etc/fstab的第一和第二行)sed -n ‘/^\//p’ /etc/fstab (顯示/etc/fstab中以/開頭的行)

sed ‘/^\//a #hello world\n#hello,linux’ /etc/fstab (在/etc/fstab中以/開頭的行後一行追加”#hello world\n#hello,linux”) (其中\n會換行)

sed ‘2r /etc/issue’ /etc/fstab (在/etc/fstab中的第二行之後追加/etc/issue文件中的內容)

sed ‘/oot/w /tmp/oot.txt’ /etc/fstab (將/etc/fstab文件中的包含oot的行的內容另存到/tmp/oot.txt)

sed ‘s#1..e#&r#g’ sed.txt (將sed.txt中的符合l..e模式的字符串全部在後面加上”r”)

sed ‘s#(1..e)#\1r#g’ sed.txt (將sed.txt中的符合l..e模式的字符串全部在後面加上”r”)

sed ‘s#l(..e)#L\1#g’ sed.txt (將sed.txt中的符合l..e模式的字符串的小寫的”l”換成大寫的”L”)

Copyright © Linux教程網 All Rights Reserved