[root@localhost ~]# sed [選項] ‘[動作]’ 文件名
選項:
-n: 一般 sed 命令會把所有數(shù)據(jù)都輸出到屏幕氮昧,如果加入此選擇,則只會
把經(jīng)過 sed 命令處理的行輸出到屏幕蜕猫。
-e: 允許對輸入數(shù)據(jù)應(yīng)用多條 sed 命令編輯祭阀。
-f 腳本文件名: 從 sed 腳本中讀入 sed 操作惦界。和 awk 命令的-f 非常類似。
-r: 在 sed 中支持?jǐn)U展正則表達(dá)式霞溪。
-i: 用 sed 的修改結(jié)果直接修改讀取數(shù)據(jù)的文件孵滞,而不是由屏幕輸出
動作:
a \: 追加,在當(dāng)前行后添加一行或多行鸯匹。添加多行時坊饶,除最后 一行外,
每行末尾需要用“\”代表數(shù)據(jù)未完結(jié)殴蓬。
c \: 行替換幼东,用 c 后面的字符串替換原數(shù)據(jù)行,替換多行時科雳,除最后一行
外根蟹,每行末尾需用“\”代表數(shù)據(jù)未完結(jié)。
i \: 插入糟秘,在當(dāng)期行前插入一行或多行简逮。插入多行時,除最后 一行外尿赚,
每行末尾需要用“\”代表數(shù)據(jù)未完結(jié)散庶。
d: 刪除,刪除指定的行凌净。
p: 打印悲龟,輸出指定的行。
s: 字串替換冰寻,用一個字符串替換另外一個字符串须教。格式為“行范圍 s/
舊字串/新字串/g”(和 vim 中的替換格式類似)。
[root@localhost ~]# sed '2p' student.txt
ID Name PHP Linux MySQL Average
1 Liming 82 95 86 87.66
1 Liming 82 95 86 87.66
2 Sc 74 96 87 85.66
3 Tg 99 83 93 91.66
只輸出第二行
[root@localhost ~]# sed -n '2p' student.txt
1 Liming 82 95 86 87.66
[root@localhost ~]# sed '2,4d' student.txt
#刪除第二行到第四行的數(shù)據(jù)
ID Name PHP Linux MySQL Average
[root@localhost ~]# cat student.txt
#但是文件本身并沒有修改
ID Name PHP Linux MySQL Average
1 Liming 82 95 86 87.66
2 Sc 74 96 87 85.66
3 Tg 99 83 93 91.66
[root@localhost ~]# sed '2a hello' student.txt
#在第二行后加入 hello
[root@localhost ~]# sed '2i hello \
> world' student.txt
#在第二行前插入兩行數(shù)據(jù)
[root@localhost ~]# sed -n '2i hello \
#只查看 sed 命令操作的數(shù)據(jù)
> world' student.txt
“-n”只查看 sed 命令操作的數(shù)據(jù),而不是查看所有數(shù)據(jù)轻腺。
字符串替換
“c”動作是進(jìn)行整行替換的乐疆,如果僅僅想替換行中的部分?jǐn)?shù)據(jù),就要使用“s”動作了贬养。s 動作
的格式是:
[root@localhost ~]# sed ‘s/舊字串/新字串/g’ 文件名
[root@localhost ~]# sed '3s/74/99/g' student.txt
#在第三行中挤土,把 74 換成 99
[root@localhost ~]# sed '4s/^/#/g' student.txt
#這里使用正則表達(dá)式,“^”代表行首
[root@localhost ~]# sed -e 's/Liming//g ; s/Tg//g' student.txt
#同時把“Liming”和“Tg”替換為空
“-e”選項可以同時執(zhí)行多個 sed 動作误算,當(dāng)然如果只是執(zhí)行一個動作也可以使用“-e”選項仰美,但
是這時沒有什么意義。還要注意儿礼,多個動作之間要用“咖杂;”號或回車分割
[root@localhost ~]# sed -e 's/Liming//g
> s/Tg//g' student.txt