sed命令使用詳解歸納

2021-09-07 07:08:32 字數 4371 閱讀 9079

sed [option] 'address command' yourfile

e.g. sed -n '2,13p' lineuser #列印檔案lineuser中第2~13行的內容,-n為option, 2,13為address,p為command

address與command中間的空格也可以省略

待處理的檔案一行一行地被sed讀入到模式空間(pattern space)中,根據匹配及相應的處理命令進行輸出顯示,預設下每個模式空間的內容都會輸出

-n:不顯示模式空間的行,只顯示被匹配處理的行

-i : 將處理後的結尾直接覆蓋原檔案

-e script:可以指定多個-e引數,每個處理命令都依照最原先的檔案內容進行處理,而不是乙個處理完再傳遞給下乙個處理

-f script-file :將命令引數寫到乙個檔案中進行呼叫

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

練習檔案

[root@zejin240 tmp]# cat lineuser

1:root

2:bin

3:daemon

4:adm

5:gootee

6:sync

7:shutdown

8:halt

9:mail

10:uucp

11:operator

12:hadoop

13:gopher

14:admin

15:nobody

1.addr1 匹配指定特定行

#顯示第三行內容

[root@zejin240 tmp]# sed -n '3p' lineuser

3:daemon

2.addr1,addr2 匹配從addr1到addr2的行

#列印第四到六行

[root@zejin240 tmp]# sed -n '4,6p' lineuser

4:adm

5:gootee

6:sync

3./regexp/ 匹配含有regexp的行

列印所有包含oo字元的行

[root@zejin240 tmp]# sed -n '/oo/p' lineuser

1:root

5:gootee

12:hadoop

4./regexp1/, /regexp2/ 匹配從含有regexp1,到regexp2的行

#列印從包含有mon的行到包含有adm的行

[root@zejin240 tmp]# sed -n '/mon/,/adm/p' lineuser

3:daemon

4:adm

5.first~step 匹配以first行為開始,以step為間隔的行

#列印1,3,5....的行,即奇數行

[root@zejin240 tmp]# sed -n '1~2p' lineuser

1:root

3:daemon

5:gootee

7:shutdown

9:mail

11:operator

13:gopher

15:nobody

#列印2,4,6....的行,即偶數行

[root@zejin240 tmp]# sed -n '2~2p' lineuser

2:bin

4:adm

6:sync

8:halt

10:uucp

12:hadoop

14:admin

6.addr1,+n 匹配addr1行及之後的n行

[root@zejin240 tmp]# sed -n '3,+4p' lineuser

3:daemon

4:adm

5:gootee

6:sync

7:shutdown

7./regexp/,+n 匹配含有regexp的行,及其後面n行

[root@zejin240 tmp]# sed -n '/adm/,+1p' lineuser

4:adm

5:gootee

14:admin

15:nobody

1. a \text 在匹配的行後新增行

#在5到8行後每行新增一行

[root@zejin240 tmp]# sed '5,8a \nice to meet you' lineuser

1:root

2:bin

3:daemon

4:adm

5:gootee

nice to meet you

6:sync

nice to meet you

7:shutdown

nice to meet you

8:halt

nice to meet you

9:mail

10:uucp

11:operator

12:hadoop

13:gopher

14:admin

15:nobody

2. i \text 在匹配的行前新增行

#在5到8行前每行新增一行

[root@zejin240 tmp]# sed '5,8i \nice to meet you' lineuser

1:root

2:bin

3:daemon

4:adm

nice to meet you

5:gootee

nice to meet you

6:sync

nice to meet you

7:shutdown

nice to meet you

8:halt

9:mail

10:uucp

11:operator

12:hadoop

13:gopher

14:admin

15:nobody

3. d 刪除匹配的行

#刪除5到13行

[root@zejin240 tmp]# sed '5,13d' lineuser

1:root

2:bin

3:daemon

4:adm

14:admin

15:nobody

4. c \text替換匹配的行

#5到13行的所有內容替換成一行

[root@zejin240 tmp]# sed '5,13c \nice to meet you' lineuser

1:root

2:bin

3:daemon

4:adm

nice to meet you

14:admin

15:nobody

5. p 列印匹配的行 示例在上面已經出現,不再列舉

6. r file 在匹配的行後插入file的內容

#在第3~5行每行後新增檔案的內容

[root@zejin240 tmp]# cat name

beijing

shenzhen

[root@zejin240 tmp]# sed '3,5r name' lineuser

1:root

2:bin

3:daemon

beijing

shenzhen

4:adm

beijing

shenzhen

5:gootee

beijing

shenzhen

6:sync

7:shutdown

8:halt

9:mail

10:uucp

11:operator

12:hadoop

13:gopher

14:admin

15:nobody

7 s/regexp/replacement/ 將regexp替換成replacement,預設只處理每一行第乙個出現的字串,如果要處理所有的字串,需要在最後加上g,如果需要忽略大小寫,需要在最後加上i

#將第3到15行裡面出現oo的地方都替換成nice to meet you

[root@zejin240 tmp]# sed '3,15s/oo/nice to meet you/' lineuser

1:root

2:bin

3:daemon

4:adm

5:gnice to meet youtee

6:sync

7:shutdown

8:halt

9:mail

10:uucp

11:operator

12:hadnice to meet youp

13:gopher

14:admin

15:nobody

sed命令使用詳解

root www sed nefr 動作 選項與引數 n 使用安靜 silent 模式。在一般 sed 的用法中,所有來自 stdin 的資料一般都會被列出到終端上。但如果加上 n 引數後,則只有經過sed 特殊處理的那一行 或者動作 才會被列出來。e 直接在命令列模式上進行 sed 的動作編輯 f...

sed命令詳解

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

sed命令詳解

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