您好,登錄后才能下訂單哦!
sed:流式編輯器,把前一個程序的輸出結果引入sed的輸入,經過一系列編輯命令轉換為另種格式輸出
命令的基本格式:
sed option 'script' file1 file2 ...
sed option -f scriptfile file1 file2 ...
其中處理的文件可以由標準輸入重定向得到,也可由命令行參數傳入,sed會依次處理傳入的多個文件,然后逐行進行處理
sed的編輯命令可以直接當命令行參數傳入,也可以寫成一個腳本文件然后由-f參數指定,編輯命令的格式為 /pattern/action
pattern為正則表達式,action為符合條件的正則表達式所要執行的相應動作
sed 是一種在線編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖
區中,稱為“模式空間”(pattern space),接著使用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往標準輸出。接著處理下一行,這樣不斷重復,直到文件末尾。而該操作使文件內容并沒有改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件
如下圖所示,sed的操作過程
sed的使用操作
1.輸出符合正則表達式的行,只輸出以2結尾的行,需要加上-n選項
2.刪除符合正則表達式的行,刪除以3結尾的行
3.查找符合pattern的行,將該行第一個匹配pattern1的字符串替換為pattern2,需要加上s指令
其中使用-i選項會更改文件的內容
4.查找符合pattern的行,將該行所有匹配pattern1的字符串替換為pattern2,在編輯命令后加上g表示全替換
查找以1開頭的行,將該行的每個1都替換為~1~,其中&符號表示pattern1的內容
對所有數字行進行處理
對數字和字母行進行處理
給每行后加上換行符
4.定址:用于決定對哪些行進行編輯。地址的形式可以是數字、正則表達式、或兩者的結合,如果沒有指定地址,sed將處理輸入文件的所有行
打印指定行
打印某一區域內的所有行
也可通過管道先找到前15行再顯示出后5行,不過使用sed命令就更簡便些了
如果沒有定址,sed將顯示所有行
查找從1到3結尾的行并顯示
5.保持空間與模式空間轉換相關命令和選項
1.給每行的結尾加一個空行,因為保持空間開始的內容為空,因此把保持空間的內容追加到模式空間中,即給每行后加上一個空行
2.逆序輸出文件中內容
可以使用tac工具輸出
使用sed命令實現
該條編輯命令為:若為第1行則不做緊跟在后邊的G操作,但做h(將模式空間內容拷貝到保持空間,刪除原來保持空間的內容)操作,即不把保持空間的內容追加到模式空間,若不是第1行,則做G操作,若為最后一行,則不做d操作,若不為最后一行,則刪除模式空間的內容,并讀入下一新行到模式空間中
3.追加匹配行到文件結尾
查找以9結尾的并追加到文件結尾
若為第一行則先進行H操作,再拷貝一次
4.行列轉換
在模式空間行的結尾進行x,每行的結尾的\n用空格代替
5.1到100的求和
H表示把模式空間的內容追加到保持空間中去,H可以帶一個地址,如$,表示到文件的末尾,然后用x將之取到模式空間中,把\n替換成空格,再打印
也可使用類C式的goto語句
:a表示標簽a,ba表示跳轉(break)到a標簽,$!表示最后一行不做后續操作,$!ba表示最后一行不跳轉到標簽a,結束此次操作
6.打印偶數行或基數行
7.注釋轉換
給每行加上注釋,再底行模式下使用以下命令
對滿足正則表達式的行去注釋
給滿足正則表達式的行加上注釋
從某行開始加上后半部分注釋
注釋轉換
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。