歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux腳本Bash中的文本利器-sed

Linux腳本Bash中的文本利器-sed

日期:2017/2/28 16:23:28   编辑:Linux教程

sed並不會改變原文件,所以的操作是原文件的一個拷貝,可以將結果重定向到新文件。在使用的時候用的最多的是三種方式(在命令行鍵入命令;將 s e d命令插入腳本文件,然後調用 s e d;將s e d命令插入腳本文件,並使s e d腳本中的一種)中的命令行鍵入方式。

格式:

sed [選項] s e d命令 輸入文件。

*選項

---------------------------------------------------------

s e d選項如下:

n 不打印;s e d不寫編輯行到標准輸出,缺省為打印所有行(編輯和未編輯)。

p 命令可以用來打印編輯行。

c 下一命令是編輯命令。使用多項編輯時加入此選項。如果只用到一條 s e d命令,

此選項無用,但指定它也沒有關系。

f 如果正在調用s e d腳本文件,使用此選項。此選項通知 s e d一個腳本文件

支持所有的s e d命令,例如:sed -f myscript.sed input_file,這裡m y s c r i p t . s e

d即為支持s e d命令的文件。

---------------------------------------------------------

*查找匹配

使用s e d在文件中定位文本的方式:

---------------------------------------------------------

x x為一行號,如1

x , y 表示行號范圍從x到y,如2,5表示從第2行到第5行

/ p a t t e r n / 查詢包含模式的行。例如/ d i s k /或/[a-z]/

/ p a t t e r n / p a t t e r n / 查詢包含兩個模式的行。例如/ d i s k

/ d i s k s /

p a t t e r n / , x 在給定行號上查詢包含模式的行。如/ r i b b o n / , 3

x , / p a t t e r n / 通過行號和模式查詢匹配行。3 ,/ v d u /

x , y ! 查詢不包含指定行號x和y的行。1 , 2 !

---------------------------------------------------------

sed編輯命令:

---------------------------------------------------------

*p 打印匹配行

sed '/np' in.txt

sed '/pattern/'p in.txt

*= 顯示文件行號

sed -e '/pattern/=' in.txt (all lines)

sed -n '/pattern/=' in.txt (only cared lines)

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

sed [address]a\

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

sed [address]i\

*d 刪除定位行

[ a d d r e s s [,a d d r e s s ] ] d

*c \ 用新文本替換定位文本

[ a d d r e s s [,address]] s/ pattern-to-find /replacement-pattern/

[g p w n]

*s 使用替換模式替換相應模式

sed -n '/op/np &/p' text.txt

*r 從另一個文件中讀文本

sed '/begin-pattern./r in.txt' out.txt

*w 寫文本到一個文件

sed '/begin-pattern/ w in.txt' out.txt

*q 第一個模式匹配完成後推出或立即推出

ex: sed '/.a.*/q' in.txt

*l 顯示與八進制A S C I I代碼等價的控制字符

{ } 在定位行執行的命令組

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

g 將模式2粘貼到/pattern n/

y 傳送字符

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

---------------------------------------------------------

*快速一行命令

---------------------------------------------------------

‘s / \ . $ / / g’ 刪除以句點結尾行

‘-e /abcd/d’ 刪除包含a b c d的行

‘s / [ ] [ ] [ ] * / [ ] / g’ 刪除一個以上空格,用一個空格代替

‘s / ^ [ ] [ ] * / / g’ 刪除行首空格

‘s / \ . [ ] [ ] * / [ ] / g’ 刪除句點後跟兩個或更多空格,代之以一個空格

‘/ ^ $ / d’ 刪除空行

‘s / ^ . / / g’ 刪除第一個字符

‘s /CO L \ ( . . . \ ) / / g’ 刪除緊跟C O L的後三個字母

‘s / ^ \ / / / g’ 從路徑中刪除第一個\

‘s / [ ] / [ ] / / g’ 刪除所有空格並用t a b鍵替代

‘S / ^ [ ] / / g’ 刪除行首所有t a b鍵

‘s / [ ] * / / g’ 刪除所有t a b鍵

---------------------------------------------------------

Copyright © Linux教程網 All Rights Reserved