Linux正規表示式 sed

2021-08-09 23:13:45 字數 2018 閱讀 5069

相比於grep,sed可以替換內容並輸出到螢幕上。

sed [選項] '動作' filename
選項

-n : 將經過sed命令處理過的行輸出到螢幕

-e : 允許對輸入資料應用多條sed命令

-i : 用sed的修改結果直接修改所讀取的檔案

......

動作

d : 刪除

p : 列印

s : 字串替換(本行)

g : 本行全域性替換

......

列印/etc/passwd檔案的第3行

$sed -n '3p' /etc/passwd

列印2到4行

$sed -n '2,4p' /etc/passwd

列印所有行

$sed -n '1,$p' /etc/passwd

#test檔案內容如下

root:x:0

:0:root

:/root

:/bin/bash

daemon:x:1

:1:daemon

:/usr/sbin

:/usr/sbin/nologin

bin:x:2

:2:root

:/bin

:/usr/sbin/nologin

列印包含root的行

$sed -n '/root/p' test

root:x:0:0:root:/root:/bin/bash

bin:x:2:2:root:/bin:/usr/sbin/nologin

注意在命令中「/」為分隔符。

加上 -e 命令可以實現多個行為

$sed -e '/bash/p' -e '/sbin/p' -n test

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

bin:x:2:2:root:/bin:/usr/sbin/nologin

刪除某行並或者多行

$sed '2d' test

root:x:0:0:root:/root:/bin/bash

bin:x:2:2:root:/bin:/usr/sbin/nologin

#*************************=

$sed '/root/d' test #刪除包含root的行

替換字元或者字串

#s為替換的動作,g為本行全域性替換,若沒有g則替換本行的第乙個。

$sed '1s/root/iam/g' test

iam:x:0:0:iam:/iam:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

bin:x:2:2:root:/bin:/usr/sbin/nologin

#將第一行所有的root替換成iam。

#sed 's/root/iam/g' test

#檔案中所有root都替換成iam

替換的格式為: sed 『s/舊字串/新字串/g filename

「/」為分隔符,也可以使用「#」、「@」等特殊字元。

#刪除文件中所有的root

$sed 's/root//g' test

:x:0:0::/:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

bin:x:2:2::/bin:/usr/sbin/nologin

#只要將新字串的位置設為空即可。

動作 a(行後追加) ,c(行替換),i(行前追加)

sed 正規表示式

如果testfile的內容是 welcome to the world of regexp 現在要去掉所有的html標籤,使輸出結果為 hello world welcome to the world of regexp 怎麼做呢?如果用下面的命令 sed s g testfile 結果是兩個空行,...

sed 常用正規表示式

1.乙個比較實用的正規表示式 匹配html的嵌入 匹配 的嵌入碼 刪除僅由空字元組成的行 sed space d filename 匹配html標籤 例如 從html檔案中剔除html標籤 sed s g space d file.html 例如 要從下列 中去除 及其中包括的 b 4c6c2a65...

正規表示式 sed 用法

可以通過定址來定位你所希望編輯的行,該位址用數字構成,用逗號分隔的兩個行數表示以這兩行為起止的行的範圍 包括行數表示的那兩行 如1,3表示1,2,3行,美元符號 表示最後一行。範圍可以通過資料,正規表示式或者二者結合的方式確定 呼叫sed命令有兩種形式 a 在當前行後面加入一行文字。b lable ...