sed 命令

一. sed 命令行格式

一般形式: sed [ 選項 ] sed 命令 輸入文件

二. sed 腳本文件格式

sed [ 選項 ] –f sed 腳本文件 輸入文件

三. 第一行具有 sed 命令解釋器的 sed 腳本文件格式

sed 腳本文件 [ 選項 ] 輸入文件

 

 

1.   sed  在文件中查詢文本的方式

方式

含義

x

X 爲行號,如 1

x,y

表示範圍從 x y

/pattern/

查詢包含模式的行

/pattern/ pattern /

查詢包含兩個模式的行

pattern/,x

在給定行號中,查詢包含模式的行

x,/ pattern /

通過行號和模式查詢匹配模式行

x,y!

查詢不包含指定行號 x y 的行

     

2.   sed 編輯命令

命令

含義

P

打印匹配行

=

顯示文件行號

a/

在定位行號後附加新文本信息

i/

在定位行號後插入新文本信息

d

刪除低位行

c/

用新文本替換定位文本

s

適用替換模式替換相應模式

r

從另外一個文件中讀文本

w

寫文本到一個文件

q

第一個模式匹配完成後退出或立即退出

l

顯示與八進制 ASCII 代碼等價的控制字符

{}

在定位行執行的命令組

n

從另一個文件中讀文本下移行,並附加在下一行

g

將模式 2 粘貼到 /pattern n/

y

傳送字符

n

延續到下一輸入行:允許跨行的模式匹配語句

     

3.   sed 編程舉例

命令

含義

p x

$ sed   -n ‘2p’ quote.txt

打印第二行, $ 表示最後一行

p x,y

$ sed   -n ‘1,3p’ quote.txt

打印 1 3

/pattern/

$ sed   -n ‘/Neave/’p quote.txt

匹配單詞 Neave ,並打印此行

x,/pattern/

$ sed   -n ‘4,/Neave/’p quote.txt

在第四行查 Neave ,並打印此行

//$/

$ sed   -n ‘//$/’p quote.txt

匹配元字符

1,$p

$ sed   -n ‘1,$p/’p quote.txt

顯示整個文件, $ 表示最後一行

/.*ing/

$ sed   -n ‘/.*ing/’p quote.txt

匹配任意字母,後跟任意字母的 0 次或者多次重複

/pattern/=

$ sed   -e ‘/music/=’ quote.txt

結果將打印出匹配的行號和整個文件

 

$ sed   -n ‘/music/=’ quote.txt

結果只打印出匹配的行號

a/

創建 sed 腳本 append.sed

#!/bin/sed –f

/compay/ a/

Then suddenly it happened

命令爲 $ ./append.sed quote.txt

執行結果是在 quote.txt 文件找到 compay c/ 表示附加操作,然後在其後附加文件 Then suddenly it happened

i/

創建 sed 腳本

#!/bin/sed –f

4 i/

Then suddenly it happened

在行號 4 之前插入文本信息

c/

創建 sed 腳本

#!/bin/sed –f

/honeysuckle/ c/

The office band played well

執行結果是在 quote.txt 文件找到 honeysuckle a/ 表示修改操作,將 The office band played well 替換 honeysuckle 所在的整行文本。

d

$ sed ‘1,3d’ quote.txt

刪除 1 3

 

$ sed ‘/Neave/d’ quote.txt

刪除 Neave 所在行

s

$ sed ‘s/night/NIGHT/’ quote.txt

查詢 night NIGHT 替換,只替換第一次匹配

s///g

$ sed ‘s/night/NIGHT/g’ quote.txt

全局替換

s///w

$ sed ‘s/night/NIGHT/w

sed.out’ quote.txt

NIGHT 替換 night 的結果保存到 sed.out

s// &/

$ sed ‘s/night/NIGHT &/p’

quote.txt

查詢模式 nigiht 並保存,將替換文本 NIGHT 放在被替換模式之前, NIGHT & 換位置,結果 NIGHT 放在被替換模式之後

保存 sed 結果

$ sed ‘/Neave/ w dht’ quote.txt

將查詢 Neave 的匹配結果行,寫入文件 dht 中。

從文件中讀文本

$ sed ‘/Neave/r sedex.txt’

quote.txt

quote.txt 中匹配模式 Neave r 表示 sed 將從另一個文件中讀文本,讀取到的文本放在匹配模式 Neave 後。

q

$ sed ‘/.a.*/q’ quote.txt

查詢首次出現模式,然後退出

l

$ sed   -n ‘1 ,$l ’ quote.txt

表示從 1 $ 最後一行,列出整個文件的控制字符

shell sed 傳值

$NAME=”It’s a go situation”

$REPLACE=”GO”

$echo $NAME | sed

“s/go/$REPLSCE/g”

It’s a GO situation

 

Sed 命令用的是雙引號 ””

 

 

 

 

4.   一行名命令集

命令集

含義

‘s///.$//g’

刪除以句點結尾行

‘-e /abcd/d’

刪除包含 abcd 的行

‘s/[][][]*/[]/g’

刪除一個以上空格,用一個空格代替

‘s/^[][]*/[]/g’

刪除行首空格

‘s//.[][]*/[]/g’

刪除句點後跟兩個或更多空格,用一個空格代替

‘s/^$//g’

刪除空行

‘s/^.//g’

刪除第一個字符

‘s/COL/(…/)//g’

刪除 COL 以及緊跟 COL 的後三個字符

s/^////g

從路徑中刪除第一個 /

追加文本

$ echo ”A B” | sed ‘s/A/ & C/g’  結果 A C B

刪除首字符

$ echo “abc.doc” | sed s/^.//g  結果 bc.doc

增加擴展名

$ echo “abc” | sed s/$/.doc/g  結果 abc.doc

 

sed 在 shell 中的應用 

sed 用於刪除 所有文件的空行

#!/bin/sh
#forsed
for files in `ls fo*`
do
sed -e "/^$/d" $files >$files.hold
mv $files.hold $files
done

發佈了41 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章