sed命令詳解

2022-07-29 03:54:11 字數 2383 閱讀 9936

1.定位行

sed命令用來處理文字,在處理前首先要找得到待處理的行,這是邏輯上必須的。所以需要首先定位,然後對定位到的各行進行各種處理,包括插入,刪除,替換等。

sed -n '10p' testfile // sed命令缺省會列印出經過處理後所有的文字,-n選項則不列印這種預設文字。10為要定位的行,找到之後執行p命令,列印這一行。

sed -n '1,10p' testfile // 列印1-10行。

sed -n '2,$p' testfile // 列印第二行到最後一行。

sed -n '3~2p' testfile // 列印第3,5,7,9,…….行,你懂得。

sed -n '/barry/,10p' testfile // 首先找到第乙個匹配/barry/(可以是其他基本正規表示式)的行,列印從這一行到第10行。

sed -n '1,3!p' testfile // 列印1-3行以外的行("!"的作用)。

sed -n '1' testfile // 首先定位到第一行,然後執行命令n,定位到第一行的下一行,然後執行p列印,可見定位之後可以用 {}執行命令組合。

sed -n 'p' testfile // 什麼都不寫,則定位全部的行。

採用a,b這種模式定位時,首先定位a(如果超出範圍或者未找到,就不會去查詢b),然後定位b,如果b這一行在a的上面會出現什麼狀況呢?例如:

sed -n '/barry/,/hello/p' testfile

該首先會定位到/barry/,如果/hello/這一行在/barry/這一行上面,則只列印/barry/這一行。為什麼會這樣?原來,sed定位是不回退的,即找到了/barry/這一行之後,就從這一行下面找/hello/,當然找不到了,所以只列印了/barry/這一行。

2.命令

在定位之後當然是執行指定的命令了。看例項:

sed '1,3d' testfile // 刪除1-3行,列印剩餘的文字,注意,此時檔案本身並沒有改變。d命令是刪除命令。

sed -n '5,10a helloworld' testfile // 在5-10行每一行後面都增加一行 helloworld。a命令在行後插入一行。

sed -n '5,10i helloworld' testfile // 在5-10行每一行前面都增加一行 helloworld。i命令在行前插入一行。

sed -n 『5~3c helloworld』 testfile //把5,8,11,14,17,20,23,26……依次替換為helloworld。c命令替換行。

sed -n '5,10c helloworld' testfile //  把5-10行整體替換成一行helloworld。當替換目標是連續的行時,把整體替換成一行。

sed -n -r '5,10s/yes|yes/no/gp' testfile // 5-10行的yes或者yes被替換成no。 -r 選項使sed支援擴充套件正規表示式。

s命令是替換命令,通常格式是line1,line2s/字串1/字串2/g,即把line1~line2的字串1全部用字串2代替,字串1可以是正規表示式。這裡不再對正規表示式詳細介紹。如果末尾不加g字元,則表示只替換每行的第乙個匹配的字串。

sed '1,10s/$/helloworld/' testfile // 在1~10行中,替換每行的行尾設定為helloworld。$是正規表示式的行尾標誌。

sed '5,10y/abc/abc/' testfile // 5-10行的a被換成a,b被換成b,c被換成c,類似tr命令的功能。y命令替換以字元為單位,而s命令以字串為單位。

sed '/my/r textfile' testfile // r命令是讀命令,sed使用該命令將乙個文字檔案中的內容加到當前行的下面。

sed -n '1,10w newfile' testfile // 將1-10行寫入newfile。w命令可以將指定的行寫入指定的檔案。

sed -n '/root/' testfile // 定位到/root/行之後,列印行號,然後列印這一行。"="是列印行號的命令。

3.特殊選項

sed -i '1,10d' testfile // 直接在檔案中刪除1~10行。-i選項表示對真實檔案進行操作,所做的更改將儲存到檔案中。

sed -s '1d' testfile1 testfile2 testfile3 // 此處有三個檔案,如果不加-s,則將三個檔案讀入,當作乙個整體處理,-s選項使分別處理。

sed -e '/root/p' -e '/barry/d' testfile // 此處用-e選項可以進行多次處理,第一次列印/root/行,第二次刪除/barry/行。

sed -e '/root/' -e '/barry/' testfile // 每次處理時,可以對每次匹配到的行執行多個命令。命令之間用";"分隔。

sed命令詳解

sed 是乙個精簡的 非互動式的編輯器。它能執行與編輯vi和emacs相同的編輯任務。sed編輯器不提供互動使用方式 只能在命令列輸入編輯命令 指定檔案 名,然後在螢幕上察看輸出。sed編輯器沒有破壞性。它不會修改檔案,除非用shell重定向來儲存輸出結果。預設情況下,所以的輸出都被列印到螢幕上。1...

sed命令詳解

sed 簡介 sed 意為流編輯器,源自英語 stream editor 的縮寫 是unix常見的命令列程式。sed 用來把文件或字串裡面的文字經過一系列編輯命令轉換為另一種格式輸出。sed 通常用來匹配乙個或多個正規表示式的文字進行處理。分號 可以用作分隔命令的指示符。常用的sed命令 模式 p ...

sed命令詳解

sed編輯器逐行處理輸入,然後把結果傳送到螢幕。i選項 直接作用原始檔,原始檔將被修改。sed命令和選項 a 在當前行後新增一行或多行 c 用新文字替換當前行中的文字 d刪除行 i 在當前行之前插入文字 h把模式空間的內容複製到暫存緩衝區 h把模式空間的內容新增到緩衝區 g取出暫存緩衝區的內容,將其...