常用命令 sed詳解

2021-09-07 10:15:18 字數 1863 閱讀 8863

以下內容參考:命令詳解/

sed是stream editor的簡稱,也就是流編輯器。它一次處理一行內容,處理時,把當前處理的行儲存在臨時緩衝區中,稱為「模式空間」(pattern space),接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒有 改變,除非你使用重定向儲存輸出。

sed命令常用的使用方法為:

sed [option] '

command

' input_file

常見的option選項:

-n 使用安靜(silent)模式(想不通為什麼不是-s)。在一般sed的用法中,所有來自stdin的內容一般都會被列出到螢幕上。但如果加上-n引數後,則只有經過sed特殊處理的那一行(或者動作)才會被列出來;

-e 直接在指令列模式上進行 sed 的動作編輯;

-f 直接將 sed 的動作寫在乙個檔案內, -f filename 則可以執行filename內的sed命令;

-r 讓sed命令支援擴充套件的正規表示式(預設是基礎正規表示式);

-i 直接修改讀取的檔案內容,而不是由螢幕輸出。

常用的命令:

c \: 取代/替換字串,c \後面跟上字串s(多行字串可以用\n分隔),則會將當前選中的行替換成字串s;

d: delete即刪除,該命令會將當前選中的行刪除;

i \: insert即插入字串,i \後面跟上字串s(多行字串可以用\n分隔),則會在當前選中的行的前面都插入字串s;

p: print即列印,該命令會列印當前選擇的行到螢幕上;

s: 替換,通常s命令的用法是這樣的:1,2s/old/new/g,將old字串替換成new字串;其中的g 表示global全域性替換,如果沒有global的話,只會替換每一行中的第乙個匹配的內容;

=: 顯示檔案行號 

在sed 命令中的定位問題:

如: 3,表示第3行, 1,5 表示第1-5行, $ 表示最後一行;

/sb/ 表示包含sb的行, /sb/, /2b/ 表示包含 sb至包含 2b的行;

/^ha.*day$/  表示以ha開頭,以day結尾的行

s/\(.*\)line$/\1/g  表示:\(\)包裹的內容表示正規表示式的第n部分,序號從1開始計算。本例中只有乙個\(\)所以\(.*\)表示正規表示式的第一部分,這部分匹配任意字串,所以\(.*\)line$匹配的就是以line結尾的任何行。用\1表示匹配到的第一部分,同樣\2表示第二部分,\3表示第三部分,可以依次這樣引用。   所以,它的意思是把每一行的line刪除掉。

舉例使用:

sed

'1a \add one

'my.txt

sed'

/sb/c \ 2d

'my.txt

sed -n '

1,4p

' my.txt #顯示第1-4行;

sed'

s/sb/2b/g

'my.txt #替換;

sed'

1,5d

' my.txt #刪除;

另外,看乙個**:

Sed 常用命令

1 sed 變數替換 ipp 1.1.1.1 將synrecvd文字中的1.1.1.1都清除 並且刪除空行 echo ipp sed i s ipp g d synrecvd 2 sed 使用條件語句 修改文字,但不能插入一行資料 root a cat c aaabbb cccddd eeefff ...

sed常用命令

toc sed是以行為單位的文字處理工具 sed命令作用a 在匹配項後面加入文字 c字元轉換 d刪除行 d刪除第一行 i在匹配行前面加入文字 h複製模板塊的內容到儲存空間 h追加模板塊的內容到儲存空間 g將儲存空間的內容複製到模式空間 g將儲存空間的內容追加到模式空間 n讀取下乙個輸入行,用下乙個命...

sed常用命令

行頭追加 假設處理的文字為test.file 在每行的頭新增字元,比如 head 命令如下 sed s head g test.file 不加 i 是輸出到螢幕上在每行的行尾新增字元,比如 tail 命令如下 sed s tail g test.file 不加 i 是輸出到螢幕上sed i就是直接對...