1蒿囤、sed簡介
sed是Linux平臺(tái)中的一種輕量級(jí)的流編輯器。
sed主要是用來將數(shù)據(jù)進(jìn)行選取崇决、替換材诽、刪除、新增的命令恒傻。
sed命令不僅可以修改文件內(nèi)容脸侥,還可以修改命令結(jié)果,支持管道符操作盈厘。而vi/vim命令只能修改文件內(nèi)容睁枕。
2、sed命令
命令格式:sed [選項(xiàng)] '[動(dòng)作]' 文件名
選項(xiàng)說明:
- -n:一般sed命令會(huì)把所有數(shù)據(jù)都輸出到屏幕,如果加入此選擇外遇,則只會(huì)把經(jīng)過sed命令處理的行輸出到屏幕注簿;
- -e:允許對(duì)輸入數(shù)據(jù)應(yīng)用多條sed編輯命令;
- -i:用sed的修改結(jié)果直接修改文件跳仿,而不是由屏幕輸出诡渴;
動(dòng)作說明:
- a:追加,在當(dāng)前行后添加一行或多行菲语。添加多行時(shí)妄辩,除最后一行外,每行末尾需要用“\”代表數(shù)據(jù)未完結(jié)山上;
- c:行替換恩袱,用c后面的字符串替換原數(shù)據(jù)行,替換多行時(shí)胶哲,除最后一行外,每行末尾需用“\”代表數(shù)據(jù)未完結(jié)潭辈;
- i : 插入鸯屿,在當(dāng)前行插入一行或多行。插入多行時(shí)把敢,除最后 一行外寄摆,每行末尾需要用“\”代表數(shù)據(jù)未完結(jié);
- d:刪除修赞,刪除指定的行婶恼;
- p:打印,輸出指定的行柏副;
- s:字符串替換勾邦,用一個(gè)字符串替換另外一個(gè)字符串。格式為"行范圍s/舊字串/新字串/g"割择;
3眷篇、sed命令示例
測試使用成績表score.txt,內(nèi)容如下圖所示:
3.1荔泳、p使用—輸出第二行數(shù)據(jù)
執(zhí)行命令:
sed '2p' score.txt
從圖中可以看到重復(fù)輸出了第二行蕉饼,而且其他行也輸出了。我們的目的是想只輸出第二行玛歌,其他的行不輸出昧港,此時(shí)需要加入-n參數(shù)。
執(zhí)行命令:
sed -n '2p' score.txt
3.2支子、p使用—輸出多行數(shù)據(jù)
執(zhí)行命令:
sed -n '1,2p' score.txt
命令執(zhí)行結(jié)果如下圖所示:
3.3创肥、d使用-刪除多行數(shù)據(jù)
執(zhí)行命令:
sed '2,3d' score.txt
從上圖中可以看到,刪除了第二行到第三行的數(shù)據(jù)。再次查看文件內(nèi)容瓤的,發(fā)現(xiàn)文件本身沒有被修改休弃。
3.4、a使用—追加數(shù)據(jù)
執(zhí)行命令:
sed '2a hello world' score.txt
執(zhí)行命令:
sed '2a hello \
world!!!' score.txt
說明:命令不會(huì)改變文件內(nèi)容圈膏!
3.5塔猾、i使用—插入多條數(shù)據(jù)
執(zhí)行命令:
sed '2i hello \
world!!!' score.txt
說明:命令不會(huì)改變文件內(nèi)容!
3.6稽坤、c使用—行替換
sed '3c hello world' score.txt
命令執(zhí)行結(jié)果如下圖所示:
3.7丈甸、s使用—字符串替換
sed 's/舊字串/新字串/g' 文件名
執(zhí)行命令,將Jay的英語成績更改為99:
sed '2s/92/99/g' score.txt
命令執(zhí)行結(jié)果如下圖所示:
說明:命令不會(huì)改變文件內(nèi)容尿褪!
3.8睦擂、修改文件內(nèi)容
執(zhí)行命令,將Jay更改為Zhou:
sed -i 's/Jay/Zhou/g' score.txt
命令執(zhí)行結(jié)果沒有任何返回信息杖玲,如下圖所示:
再次查看文件內(nèi)容顿仇,發(fā)現(xiàn)名稱已經(jīng)變更。
說明:此種場景使用不多摆马,如果真的需要更改文件臼闻,直接使用vim命令更加直觀也更加可靠!