linux中sed命令的使用與注意小結(jié)
前言
sed是一種流編輯器,它是文本處理中非常有用的工具,能夠完美的配合正則表達(dá)式使用,功能不同凡響。處理時(shí),把當(dāng)前處理的行存儲(chǔ)在臨時(shí)緩沖區(qū)中,稱為『模式空間』(pattern space),接著用sed命令處理緩沖區(qū)中的內(nèi)容,處理完成后,把緩沖區(qū)的內(nèi)容送往屏幕。接著處理下一行,這樣不斷重復(fù),直到文件末尾。文件內(nèi)容并沒有改變,除非你使用重定向存儲(chǔ)輸出。sed主要用來自動(dòng)編輯一個(gè)或多個(gè)文件,簡(jiǎn)化對(duì)文件的反復(fù)操作,編寫轉(zhuǎn)換程序等。
sed的用法
$ sed [-nefr] [動(dòng)作]
參數(shù):
- -n : 使用安靜模式。在一般sed用法中,所有來自STDIN的數(shù)據(jù)一般都會(huì)被列出到屏幕上。但如果加上-n參數(shù)后,則只有經(jīng)過sed特殊處理的那一行(或者操作)才會(huì)被列出來。
- -e : 直接在命令行模式上進(jìn)行sed的動(dòng)作編輯。(默認(rèn))
- -f : 直接將sed的動(dòng)作寫在一個(gè)文件內(nèi),
-f filename
則可以執(zhí)行filename內(nèi)的sed動(dòng)作。 - -r : sed的動(dòng)作支持的是擴(kuò)展型正則表達(dá)式的語法(默認(rèn)是基礎(chǔ)正則表達(dá)式語法)。
- -i : 直接修改讀取的文件內(nèi)容,而不是屏幕輸出。
默認(rèn)情況下sed不直接作用于讀取的文件中
動(dòng)作說明: [n1[,n2]] function
- n1,n2 : 不見得會(huì)存在,一般代表選擇進(jìn)行動(dòng)作的行數(shù),舉例來說,如果我的動(dòng)作是需要在10到20行之間進(jìn)行的,則“10,20[動(dòng)作行為]”。
function 有下面的這些參數(shù):
- a : 新增到下一行,后面可以接字符串
- c : 替換,后面可以接字符串
- d : 刪除,后面不接熱河參數(shù)
- i : 插入到上一行,后面可接字符串
- p : 打印,通常會(huì)與參數(shù) sed -n 一起運(yùn)行
- s : 查找并替換特定字符串,通常搭配正則表達(dá)式。
例如,1,20s/old/new/g
演示
//假設(shè)有text文件 $ sed '2,5d' text #將第2~5行刪除 $ sed '2a hahaha' text #在第二行后加上“hahaha”字樣 $ sed '2a hahaha\ > xixixi' text #在第二行后加上兩行字 $ sed '2,5c No 2-5 number' text #將第2~5行的內(nèi)容替換成為“No 2-5 number”,是整行替換 $ sed -n '5,7p' text #將5~7行打印出來,一定要加 -n $ sed 's/hahaha/ssss/g' text #將hahaha字段替換成ssss,這是部分?jǐn)?shù)據(jù)的查找并替換
sed還可以和正則表達(dá)式配合使用
如:
$ sed 's/^h/ssss/g' text #將h開頭的字段替換成ssss
注意
- sed后面接的動(dòng)作,務(wù)必以兩個(gè)單引號(hào)括住。
- 使用p(打印)參數(shù)時(shí),sed一定要用-n,否則所有的行都會(huì)被輸出,這樣就沒有意義了。
- sed默認(rèn)不直接作用于讀取的文件中。
- -i參數(shù)要慎用,它會(huì)直接修改讀取的文件內(nèi)容。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Linux CentOS使用crontab設(shè)置定時(shí)重啟的方法
本篇介紹 crontab 設(shè)置定時(shí)任務(wù),并且把 crontab 加入到開機(jī)自啟動(dòng)中,感興趣的朋友跟隨腳本之家小編一起看看吧2018-08-08sersync2 完全安裝配置說明(二) 可選功能與xml高級(jí)配置
sersync2 完全安裝配置說明(二) 可選功能與xml高級(jí)配置,需要的朋友可以參考下。2011-11-11Linux操作文件的底層系統(tǒng)調(diào)用,探究父子進(jìn)程是否可以共享文件問題
這篇文章主要介紹了Linux操作文件的底層系統(tǒng)調(diào)用,探究父子進(jìn)程是否可以共享文件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03淺析ARM架構(gòu)下的函數(shù)的調(diào)用過程
本文主要介紹了linux程序運(yùn)行的狀態(tài)以及如何推導(dǎo)調(diào)用棧。2021-05-05改版時(shí)保留原鏈接,創(chuàng)建新的URL的方法
本功能的Alias指令在 httpd.conf中是這一句: #Alias /webpath /full/filesystem/path 去掉前面的#,并做下相應(yīng)的修改即可。2008-09-09Ubuntu16.04 靜態(tài)IP地址設(shè)置(NAT方式)
這篇文章主要介紹了Ubuntu16.04 靜態(tài)IP地址設(shè)置(NAT方式),詳細(xì)的介紹了為VMware虛擬機(jī)內(nèi)安裝的Ubuntu 16.04設(shè)置靜態(tài)IP地址NAT方式,有興趣的可以了解一下。2017-02-02