Linux上的sed命令

2021-09-23 06:13:07 字數 1405 閱讀 3147

參考:

$ 表示行尾 

^ 表示行首

[a-z0-9]表示字元範圍

[^]表示除了字符集中的字元以外的字元 

sed的正則中  \(\)  和 \ 需要轉義 

. 表示任意字元  

* 表示零個或者多個  

\+ 一次或多次  

\? 零次或一次    

\| 表示邏輯或

sed [選項] [動作] 檔名

選項:-n :使用安靜(silent)模式。在一般 sed 的用法中,所有來自 stdin 的資料一般都會被列出到終端上。但如果加上 -n 引數後,則只有經過sed 特殊處理的那一行(或者動作)才會被列出來。

-i :直接修改讀取的檔案內容,而不是輸出到終端。

動作:a :新增行, a 的後面可以是字串,而這些字串會在新的一行出現(目前的下一行)

c :取代行, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行

d :刪除行,因為是刪除,所以 d 後面通常不接任何引數,直接刪除位址表示的行;

i :插入行, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);

p :列印,亦即將某個選擇的資料印出。通常 p 會與引數 sed -n 一起執行

s :替換,可以直接進行替換的工作,通常這個 s 的動作可以搭配正規表示法,例如 1,20s/old/new/g 一般是替換符合條件的字串而不是整行

位址範圍的表示一般是  m,n 表示對m和n行之間的所有行進行操作,也包含第m行和第n行。

sed '1,2d' hg  # 刪除1到2行的內容

sed '/2/d' hg # 刪除包含2的行

sed '/^2/d' hg # 刪除以2開頭的行

# ---

sed '1a hello world' # 在第1行後面新加一行"hello world",前面的空格忽略,後面的不忽略

sed '1i hello world' # 在第1行插入

# ---

sed '1c hello world' hg #將第1行替換成"hello world"

sed '/^2/c hello world' hg # 替換以2開頭的行

sed 's/aa/aa/' hg # 將每行的第乙個"aa"替換成"aa"。

sed 's/aa/aa/g' hg # 將所有的"aa"替換成"aa"。

sed '5,$s/aa/aa/g' hg # 對第5行直到檔案末尾的所有行進行搜尋替換操

sed '/^[0-9]/s/aa/aa/g' hg

# ---

sed -n '2p' hg # 只輸出第2行

# ---

sed -i '2d' hg # 將修改儲存在檔案中,而不是顯示在螢幕上

linux常用的命令 sed

sed 1d ab 刪除第一行 sed d ab 刪除最後一行 sed 1,2d ab 刪除第一行到第二行 sed 2,d ab 刪除第二行到最後一行 顯示某行 sed n 1p ab 顯示第一行 sed n p ab 顯示最後一行 sed n 1,2p ab 顯示第一行到第二行 sed n 2,p...

linux中的sed命令

昨天我學習了awk,今天來學習一下sed sed是乙個管線命令,可以分析standard inputer,並且能對資料進行取代,新增,刪除,擷取特定行等功能。sed nefri 動作 n 使用安靜 silent 模式。一般在sed中所有來自stdin的資料一般都會被列出在熒幕上,但如果加上 n引數後...

linux中的sed 命令

sed的基本語法 sed hnv e script f script檔案 文字檔案 引數說明 h或 help 顯示幫助 n或 quiet或 silent 僅顯示script處理後的結果 v或 version 顯示版本資訊。e script 或 expression script 以選項中指定的scr...