sed
- Stream EDitor, 行編輯器
- sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非使用重定向存儲輸出。
- Sed主要用來自動編輯一個或多個文件,簡化對文件的反復操作,編寫轉換程序等
- sed 默認支持標準輸入,可結合 “ | ” ,標準輸入處理文本
用法:
sed [option]… ‘script’ inputfile…
-
常用選項:
-
-n:不輸出模式空間內容到屏幕,即不自動打印
-e: 多點編輯
-f:/PATH/SCRIPT_FILE: 從指定文件中讀取編輯腳本
-r: 支持使用擴展正則表達式
-i:對原文件進行修改
-i.bak: 備份文件并原處編輯
-
-n:不輸出模式空間內容到屏幕,即不自動打印
-
script: ‘地址定界編輯命令’
-
地址定界:
(1) 不給地址:對全文進行處理
(2) 單地址:
#: 指定的行
/pattern/:被此處模式所能夠匹配到的每一行
(3) 地址范圍:
#,#
#,+n : 從第#行開始,一直向下n行;
/pat1/,/pat2/ :從第一次被/pat1/匹配到的行開始,到最后一次匹配到/pat2/的行結束;
#,/pat1/ :從第#行開始,到第一次匹配到/pat1/的行結束;
(4) first~step:指定起始行,以及步長
1~2 奇數
2~2 偶數行 -
編輯命令:
-
d: 刪除模式空間匹配的行
p: 顯示模式空間中的內容
a [ \ ]text:在指定行后面追加文本(text),支持使用\n實現多行追加
i [ \ ]text:在行前面插入文本,支持使用\n實現多行追加
c [ \ ]text:替換行為單行或多行文本;其中是整行替換
w /path/somefile: 保存模式匹配的行至指定文件
r /path/somefile:讀取指定文件的文本至模式空間中匹配到的行后
=: 為模式空間中的行打印行號
!:模式空間中匹配行取反處理
s///:查找替換,支持使用其它分隔符,s@@@,s###-
替換標記:
g: 行內全局替換
p: 顯示替換成功的行
w /PATH/TO/SOMEFILE:將替換成功的行保存至文件中
-
替換標記:
-
-
-
高級編輯命令
-
h: 把模式空間中的內容覆蓋至保持空間中
H:把模式空間中的內容追加至保持空間中
g: 從保持空間取出數據覆蓋至模式空間
G:從保持空間取出內容追加至模式空間
x: 把模式空間中的內容與保持空間中的內容進行互換
n: 讀取匹配到的行的下一行覆蓋至模式空間
N:讀取匹配到的行的下一行追加至模式空間
d: 刪除模式空間中的行
D:刪除當前模式空間開端至\n的內容(不再傳至標準輸出),放棄之后的命令,但是對剩余模式空間重新執行sed奇數行
seq 10|sed -n ‘1~2p’
seq 10|sed ‘2~2d’
seq 10 |sed -n ‘2~2!p’
seq 10 |sed ‘n;d’偶數行
seq 10 |sed -n ‘n;p’
取IP
ifconfig eth0|sed -n 2p|sed -e ‘s/.r://’ -e ‘s/ B.//’
ifconfig eth0|sed -e ‘s/.inet addr://’ -e ‘s/ B.//’ -n -e 2p
ifconfig eth0|sed ‘2!d;s/^.r://;s/ .//’取基名
echo /etc/sysconfig/network-scripts/ |sed -r ‘s@(^/.*/)([^/]+/?)@\2@’
取目錄名
echo /etc/sysconfig/network-scripts/ |sed -r ‘s@(^/.*/)([^/]+/?)@\1@’
對/etc/fstab非#開頭的加注釋
sed -r ‘s/(^[^#])/#\1/’ /etc/fstab
sed -r ‘s/^[^#]/#&/’ /etc/fstab倒序
seq 10 |sed ‘1!G;h;$!d’
只保留最后兩行
seq 10|sed ‘$!N;$!d’
-
原創文章,作者:s,如若轉載,請注明出處:http://www.www58058.com/74302