sed簡介:
文本處理三劍客之一的sed
sed是一種行編輯器,它一次處理一行內容,本身是一個管道命令,對行的數據進行 替換 增加 刪除 選取的工作
sed的命令為:sed[opition] ‘script’ inputfile…
‘地址命令’
常用的選項:
-n 不輸出模式空間內容到屏幕
-e 多點編輯
-r 支持使用擴展正則表達式
-i.bak 備份文件并原處編輯
常用命令:
a ∶ 新增, a 的后面可以接字串,而這些字串會在新的一行出現(目前的下一行)
c ∶ 取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行
d ∶ 刪除,因為是刪除,所以 d 后面通常不接任何內容
i ∶ 插入, i 的后面可以接字串,而這些字串會在新的一行出現(目前的上一行)
p∶ 列印,亦即將某個選擇的資料印出。通常 p 會與參數 sed -n 一起用
s∶ 取代,可以直接進行替換的工作。通常這個 s 的動作可以搭配正則表達式。
地址定界:
1.(1) 不給地址:對全文進行處理
(2) 單地址:
#: 指定的行
/pattern/ :被此處模式所能夠匹配到的每一行
(3) 地址范圍:
#,#
#,+#
/pat1/,/pat2/
#,/pat1/
(4) ~ :步進
1~2 奇數行
2~2 偶數行
編輯命令:
d: 刪除模式空間匹配的行
p: 顯示模式空間中的內容
a [\]text :在指定行 后面 追加文本
支持 使用\n 實現多行追加
i [\]text :在行前面 插入文本
c [\]text :替換行為單行或多行文本
w /path/somefile: 保存模式匹配的行至指定文件
r /path/somefile :讀取指定文件的文本至 模式空間中
匹配 到的行后
=: 為模式空間中的行打印行號
!: 模式空間中匹配行取反處理
sed工具
s/// :查找替換, 支持使用其它分隔符,s@@@ ,s###
替換標記:
g: 行內全局替換
p: 顯示替換成功的行
w /PATH/TO/SOMEFILE :將替換成功的 行 保存至文件中
如果沒有定址,sed將對全文進行處理
舉例:[本次我們有一個文件f1] 定義了五行內容
如:只顯示第三行 sed -n ‘3p’ f1
只看文件第1行和第3行之間的文件
刪除第1行的文件
a與i 比較相似i是前插a是后加:
而且還有三個取它們它們分別代表不同的意思:
c :整行替換或文本
g:全局替換
s:可跟正則表達式
其次sed工具還有些高級編輯命令:
h: 把模式空間中的內容覆蓋至保持空間中
H :把模式空間中的內容追加至保持空間中
g: 從保持空間取出數據覆蓋至模式空間
G :從保持空間取出內容追加至模式空間
x: 把模式空間中的內容與保持空間中的內容進行互換
n: 讀取匹配到的行的下一行 覆蓋 至模式空間
N :讀取匹配到的行的下一行 追加 至模式空間
d: 刪除模式空間中的行
D :刪除 當前模式空間開端至\n 的內容( 不再傳 至標準輸
出),放棄之后的命令,但是對剩余模式空間重新執行sed
sed -n ‘n;p’ FILE
sed ‘1!G;h;$!d’ FI LE
sed ‘N;D‘ FILE
sed ‘$!N;$!D’ FILE
sed ‘$!d’ FILE
sed ‘G’ FILE
sed ‘g’ FILE
sed ‘/^$/d;G’ FILE
sed ‘n;d’ FILE
sed -n ‘1!G;h;$p’ FILE
原創文章,作者:gd1479,如若轉載,請注明出處:http://www.www58058.com/78447