sed 基礎語法

2021-10-01 16:23:05 字數 2344 閱讀 7695

sed 常見的語法格式有兩中,一種為命令列模式,另一種為指令碼模式

sed

[options]

' 處理動作 ' 檔名

2.1.1. 常用選項
-[e] 進行多次編輯

-[n] 取消預設輸出,不自動列印模式空間

-[r] 使用擴充套件正規表示式

-[i]修改原始檔

-[f]指定 sed 指令碼的檔名

注意:

2.1.2. 常見動作

注意: 動作必須位於單引號中

p列印

i在指定行之前插入內容

o在指定行之後插入內容

c替換指定行所有內容

d刪除指定行

2.1.3. 學習示例

passwd檔案進行搜尋替換操作

語法:sed [選項] **' s/搜尋'**

其中。s表示 search搜尋;斜槓/表示分隔符。可以自己定義;動作一般為列印p和全域性替換g

# chen @ localhost in ~/shell [12:48:57] 

$ sed -n 's/adm/adm/gp'

passwd

adm:x:3:4:adm:/var/adm:/sbin/nologin

# chen @ localhost in ~/shell [12:50:11]

$ sed -n 's/\/sbin\/nologin/chen/gp'

passwd

# 將/sbin/nologin 替換為 chen

in:x:1:1:bin:/bin:chen

ddaemon:x:2:2:daemon:/sbin:chen

adm:x:3:4:adm:/var/adm:chen

# 注意:搜尋替換中的分隔符可以自己搞定

# chen @ localhost in ~/shell [12:50:59]

$ sed -n 's@/sbin/nologin@chen@gp'

passwd

in:x:1:1:bin:/bin:chen

ddaemon:x:2:2:daemon:/sbin:chen

adm:x:3:4:adm:/var/adm:chen

其他命令

r從另外檔案中讀取內容

w內容另存為

&儲存查詢串在替換串中引用,和()相同

=列印行號

!對所選行以外的所有行應用命令,放到行數之後

q退出

2.1.4. sed 結合正則使用

/key/查詢包含關鍵字的行

/key1/,/key2/匹配兩個關鍵字之間的行

/key/,x從匹配關鍵字的行開始到檔案第x行之間的行(包含關鍵字所在行)

x,/key/從x行開始到關鍵字的匹配行之間的行

x,y!不包含x到y行

如果沒有指定位址,sed將處理輸入檔案的所有行

學習案例

# chen @ localhost in ~/shell [14:09:02] 

$ sed -nr '3,/^shut/p'

passwd

ddaemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

2.2.1. 用法

sed -f scripts.sh file

# 使用指令碼處理檔案

# 指令碼的第一行

#!/bin/sed -f

2.2.2. 注意事項

sed 語法 用法

sed command filename s 只顯示結果而不修改檔案。1 sed 2,5d file 顯示檔案file,除去2 5行,但行數超過檔案實際行數時不會報錯。sed 10 1 4 d file 顯示檔案file,除去包含101 104的行。sed 2,d file 顯示檔案,只顯示第一行。...

sed基礎用法

用法 sed option 位址命令 檔案 常用選項 n 不列印模式空間的內容到螢幕上 預設是列印的 e 多點編輯 sed optin e e f path script file 從指定檔案中讀取編輯指令碼 r 支援使用擴充套件正規表示式 i.bak 備份檔案並原處編輯 位址範圍 不給位址 對全文...

SED實用基礎

sed是一種linux的輕量級流編輯器。字串擷取命令 主要用來對資料進行選取 替換 刪除 新增。格式 sed 選項 動作 檔名 sed 正規表示式 p n 會只將處理後的資料輸出到螢幕 e 多項編輯 i 直接修改檔案sed s old new g text.txt 預修改,只是快取並沒修改 sed ...