Shell指令碼sed命令

2022-08-17 04:57:23 字數 3354 閱讀 1551

1、p命令

命令p用於顯示模式空間的內容。預設情況下,sed把輸入行列印在螢幕上,選項-n用於取消預設的列印操作。當選項-n和命令p同時出現時,sed可列印選定的內容。

例子:[plain]view plain

copy

(1)sed '/my/p' datafile  

#預設情況下,sed把所有輸入行都列印在標準輸出上。如果某行匹配模式my,p命令將把該行另外列印一遍。  

(2)sed -n '/my/p' datafile  

#選項-n取消sed預設的列印,p命令把匹配模式my的行列印一遍。  

2、d命令

命令d用於刪除輸入行。sed先將輸入行從檔案複製到模式空間裡,然後對該行執行sed命令,最後將模式空間裡的內容顯示在螢幕上。如果發出的是命令d,當前模式空間裡的輸入行會被刪除,不被顯示。

例子:[plain]view plain

copy

(1)sed '$d' datafile  

#刪除最後一行,其餘的都被顯示  

(2)sed '/my/d' datafile  

#刪除包含my的行,其餘的都被顯示  

3、s命令

例子:[plain]view plain

copy

(1)sed 's/^my/you/g' datafile  

#命令末端的g表示在行內進行全域性替換,也就是說如果某行出現多個my,所有的my都被替換為you。  

(2)sed -n '1,20s/my$/you/gp' datafile  

#取消預設輸出,處理1到20行裡匹配以my結尾的行,把行內所有的my替換為you,並列印到螢幕上。  

(3)sed 's#my#your#g' datafile  

#緊跟在s命令後的字元就是查詢串和替換串之間的分隔符。分隔符預設為正斜槓,但可以改變。無論什麼字元(換行符、反斜線除外),只要緊跟s命令,就成了新的串分隔符。  

4、e選項

例子:[plain]view plain

copy

sed -e '1,10d' -e 's/my/your/g' datafile  

#選項-e用於進行多重編輯。第一重編輯刪除第1-3行。第二重編輯將出現的所有my替換為your。因為是逐行進行這兩項編輯(即這兩個命令都在模式空間的當前行上執行),所以編輯命令的順序會影響結果。  

5、r命令

r命令是讀命令。sed使用該命令將乙個文字檔案中的內容加到當前檔案的特定位置上。

例如:[plain]view plain

copy

sed '/my/r introduce.txt' datafile  

#如果在檔案datafile的某一行匹配到模式my,就在該行後讀入檔案introduce.txt的內容。如果出現my的行不止一行,則在出現my的各行後都讀入introduce.txt檔案的內容。  

6、w命令

例子:[plain]view plain

copy

sed -n '/hrwang/w me.txt' datafile  

7、a\ 命令

a\ 命令是追加命令,追加將新增新文字到檔案中當前行(即讀入模式緩衝區中的行)的後面。所追加的文字行位於sed命令的下方另起一行。如果要追加的內容超過一行,則每一行都必須以反斜線結束,最後一行除外。最後一行將以引號和檔名結束。

例子:[plain]view plain

copy

sed '/^hrwang/a\  

>hrwang and mjfan are husband\  

>and wife' datafile  

#如果在datafile檔案中發現匹配以hrwang開頭的行,則在該行下面追加hrwang and mjfan are husband and wife  

8、i\ 命令

i\ 命令是在當前行的前面插入新的文字。

9、c\ 命令

sed使用該命令將已有文字修改成新的文字。

10、n命令

sed使用該命令獲取輸入檔案的下一行,並將其讀入到模式緩衝區中,任何sed命令都將應用到匹配行緊接著的下一行上。

例如:[plain]view plain

copy

sed '/hrwang/' datafile  

11、y命令

該命令與unix/linux中的tr命令類似,字元按照一對一的方式從左到右進行轉換。例如,y/abc/abc/將把所有小寫的a轉換成a,小寫的b轉換成b,小寫的c轉換成c。

例如:[plain]view plain

copy

sed '1,20y/hrwang12/hrwang^$/' datafile  

#將1到20行內,所有的小寫hrwang轉換成大寫,將1轉換成^,將2轉換成$。  

#正規表示式元字元對y命令不起作用。與s命令的分隔符一樣,斜線可以被替換成其它的字元。  

12、q命令

q命令將導致sed程式退出,不再進行其它的處理。

[plain]view plain

copy

sed '/hrwang/' datafile  

13、h命令和g命令

[plain]view plain

copy

#cat datafile  

my name is hrwang.  

your name is mjfan.  

hrwang is mjfan's husband.  

mjfan is hrwang's wife.  

[plain]view plain

copy

sed -e '/hrwang/h' -e '$g' datafile  

sed -e '/hrwang/h' -e '$g' datafile  

#通過上面兩條命令,你會發現h會把原來暫存緩衝區的內容清除,只儲存最近一次執行h時儲存進去的模式空間的內容。而h命令則把每次匹配hrwnag的行都追加儲存在暫存緩衝區。  

sed -e '/hrwang/h' -e '$g' datafile  

sed -e '/hrwang/h' -e '$g' datafile  

#通過上面兩條命令,你會發現g把暫存緩衝區中的內容替換掉了模式空間中當前行的內容,此處即替換了最後一行。而g命令則把暫存緩衝區的內容追加到了模式空間的當前行後。此處即追加到了末尾。  

shell指令碼工具之sed命令

sed就是批處理的流編輯器,可以對來自檔案或標準輸入的輸入流進行轉換,sed通常被用作管道中的過濾器.由於sed僅僅對其輸入進行一遍掃瞄,因此比其它互動式編輯器更加高效.檔案內容 root tong1 opt cat sed.txt 1tong 2 cheng 3 hellow 4word wu h...

sed命令例項 shell指令碼入門

什麼是 sed?sed是乙個很好的檔案處理工具,本身是乙個管道命令,主要以行為單位進行處理,可以將資料行進行替換 刪除 新增 選取等特定工作。sed 選項 命令 n,使用安靜 silent 模式。在一般 sed 的用法中,所有來自 stdin 的資料一般都會被列出到終端上。但如果加上 n 引數後,則...

Shell 指令碼 Sed命令的使用

sed是乙個很好的檔案處理工具,本身是乙個管道命令,主要是以行為單位進行處理,可以將資料行進行替換 刪除 新增 選取等特定工作,下面先了解一下sed的用法 sed命令列格式為 sed nefri command 輸入文字 常用選項 n 使用安靜 silent 模式。在一般 sed 的用法中,所有來自...