sed程式設計

2021-06-21 20:49:26 字數 2452 閱讀 2894

sed命令:sed基本用法;sed命令選項;sed命令定位;sed基本編輯

一、sed基本用法:

sed(stream editor)是流編輯器

attention:sed只是對緩衝區中原始檔案的副本進行編輯,並不編輯原始的檔案,如果需要儲存改動內容,可以選擇使用下面兩種方法:重定向 w編輯命令

呼叫sed有三種方法:

1)  

在shell命令列輸入命令呼叫sed,格式為:

sed [選項] 『sed命令』 輸入檔案

2) 將sed命令插入指令碼檔案後,然後通過sed命令呼叫它,格式為:

sed [選項] -f sed指令碼檔案 輸入檔案(指令碼檔案的首行不以#!/bin/sed –f開頭)

./sed指令碼檔案 輸入檔案 (指令碼檔案的首行是#!/bin/sed –f)

推薦使用第一種方法和第三種方法

sed命令選項:

選項 意義

-n 不列印所有行到標準輸出  no

-e 表示將下乙個字串解析為sed編輯命令,如果只傳遞乙個編輯命令給sed,-e選項可以省略 

express

-f 表示正在呼叫sed指令碼檔案  

file

預設:sed處理完文字將輸入檔案列印到標準輸出;一旦加上-n選項,sed就不再列印輸入檔案,而只列印處理結果

當向sed命令傳遞多個編輯命令時,在每個編輯命令前需要加上-e選項

sed文字定位方法:(查詢方式)

選項 意義

x x為指定行號

x,y 指定從x到y的行號範圍

/pattern/ 查詢包含模式的行

/pattern/pattern/ 查詢包含兩個模式的行

/pattern/,x從與pattern的匹配行到x號行之間的行

x,/pattern/從x號行到與pattern的匹配行之間的行

x,y! 查詢不包括x和y行號的行

sed編輯命令

選項 意義

p列印匹配行  

print

=

列印檔案行號 

=number

a\

在定位行號之後追加文字資訊  

i\ 在定位行號之前插入文字資訊 

insert

d 刪除定位行  

delete

c\ 用新文字替換定位文字  

cover

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

subtitute

r 從另乙個檔案中讀文字  

read 

w 將文字寫入到乙個檔案  

write

y 變換字元  

vary 

q 第乙個模式匹配完成後退出  

quit 只需查詢到乙個即可

l 顯示與八進位制ascii**等價的控制字元  

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

n 讀取下乙個輸入行,用下乙個命令處理新的行  

next

h 將模式緩衝區文字拷貝到保持緩衝區  

h 將模式緩衝區文字追加到保持緩衝區

x 互換模式緩衝區和保持緩衝區內容  

exchange

g 將保持緩衝區內容拷貝到模式緩衝區  

regu

g 將保持緩衝區內容追加到模式緩衝區

替換文字

: s/被替換的字串/新字串/[替換選項]

選項 意義

g 表示替換文字中所有出現被替換字串之處  

global

p 與-n選項結合,只列印替換行

w檔名 表示將輸出定向到乙個檔案 

write

預設:sed s命令將替換後的全部文字都輸出,

如果要求只列印替換行,需要結合使用-n和p選項:sed -n『s/被替換的字串/新字串/p』 輸入檔案

sed -n『s/被替換的字串/新字串/gp』 輸入檔案

g選項是替換文字中所有出現被替換字串之處

sed -n『s/被替換的字串/新字串/woutfile』輸入檔案

sed高階程式設計(一)

d 刪除多行組中的單隔行。p 列印多行組中的單隔行。next命令,小寫n命令使sed移動到資料流中文字的下一行。cat data the first meeting of the linux system administrator s group will be held on tuesday.a...

shell指令碼程式設計之sed

sed 選項 指令 動作 檔案 n 使用安靜 silent 模式。在一般 sed 的用法中,所有來自 stdin 的資料一般都會被列出到終端上。但如果加上 n 引數後,則只有經過sed 特殊處理的那一行 或者動作 才會被列出來。f 直接將 sed 的動作寫在乙個檔案內,f filename 則可以執...

shell程式設計 sed的選項

sed 引數 partern commond file 標準輸出 sed sed 引數 partern commond n 使用安靜 silent 模式。在一般 sed 的用法中,所有來自 stdin 的資料一般都會被列出到終端上。但如果加上 n 引數後,則只有經過sed 特殊處理的那一行 或者動作...