sed使用詳解
大綱:
1、 sed是什么
2、 為什么要使用sed
3、 sed使用方法
4、 sed詳解
正題:
1、 sed是什么
sed全名Stream Editor,是Linux下一條命令,也是文本處理三劍客之一的流編輯器,主要對行進行處理。
2、 為什么要使用sed
sed功能強大,使用靈活,而且支持正則表達式,不僅可對數據進行刪除、替換、修改、插入,而且可以通過地址定界來對范圍內的行進行編輯,大大提高了工作效能,省去手工操作的繁瑣與失誤率。
3、 sed使用方法
sed 主要由四部分組成:命令主體、選項、處理方式、待處理的文件,使用格式為:
sed [OPTIONS] ‘SCRIPT’
FILE
4、 sed詳解
sed命令的使用格式:
sed [OPTION] ‘SCRIPT’
FILE
OPTION:
-n:不輸出模式空間中未被匹配和默認輸出的內容至屏幕(只輸出匹配的內容)
-e
script:實現多點編輯,即可增加多個’script’ 例如:
sed -n -e ‘/etc/s/fstab/FSTAB/’ -e ‘1~2p’ /etc/fstab
-f
/PATH/SED_CRRIPT_FILE:從其他文件中讀取編輯命令,即讀取script
注:寫有script的文件中不需要單引號,直接寫script。
-r:支持使用擴展表達式:默認只能用基本正則,使用-r后可以用擴展正則。
-i:直接編輯原文件,慎用。
‘SCRIPT’:
SCRIPT由兩部分組成,地址定界+編輯命令;
地址定界:主要來判定處理的行范圍,默認為全部
(1) 空地址:對全文進行處理
(2) 單地址:
#:指定行
/pattern/:被此模式所匹配到的每一行;
(3) 地址范圍:
#, # : 從指定的行數到指定的行數;
#, +# : 從指定的行數到幾行之后;
#, /parttern/ : 從指定的行數到匹配到此模式的行;
/parttern1/, /parttern2/ : 從匹配到1的模式的行到匹配到2的模式的行;
(4) 步進:
x~y:設x為起點,每次向前移動y步;
例如:
1~2 : 所有的奇數行;
2~2 : 所有的偶數行;
編輯命令:主要作用是針對匹配到的數據該如何處理;
文本的刪除和顯示:
d:刪除(行),主要針對行的刪除;
p:顯示模式空間的內容,如果不加選項-n,匹配到模式空間的內容會重復顯示;
文本的添加和替換:
a
\text: 在指定或匹配行后面追加文本“text”,
支持使用\n實現多行追加
i \text: 在指定或匹配行前追加文本“text”,支持使用\n實現多行追加;
c \text: 將指定或匹配的行替換為“text”,
s/// : 查找替換(行內編輯),支持基本正則表達式,可將查找出來的數據段替換、更改、刪除,其分隔符可自行設定,常用有:s@@@, s###;
g:全局替換;默認只會替換匹配到的第一段數據;
w: /PATH/TO/SOMEFILE:將替換成功的結果保存至指定文件中;
p:顯示替換成功的行;
注:使用方法同vim中命令模式中的查找替換。
文本的導入與導出:
w
/PATH/TO/SOMEFILE : 保存模式空間匹配到的行到指定文件中;
r /PATH/FROM/SOMEFILE:讀取指定文件的內容至當前文件被模式匹配到的行后面;文件合并;
其他:
=:為模式匹配到的行打印行號;
?。?/b>條件取反,使用方法是在編輯命令前,沒有空格:
sed
‘1~3!p’ /etc/fstab
綜合實戰:
以上是sed各參數的詳細說明,只用通過各種案例才能將sed命令牢牢掌握,以下是一些常用的使用方式:
1、刪除/boot/grub2/grub.cfg文件中所有以#開頭的行的行首的所有#號與空白字符;
2、刪除/etc/fstab/文件中的偶數行,并且在沒有#號的奇數行首加#;
3、輸出一個絕對路徑給sed命令,取出其目錄,其行為類似于dirname;
echo /etc/httpd/conf/
|sed ‘s@[^/]\+/*$@@’
/etc/httpd/
4、 將nologin 的用戶信息導出至 /root/nologin.txt
5、 將/etc/fstab中所有以#開頭的行更改為#magedu.com
原創文章,作者:N25_韓奇洋,如若轉載,請注明出處:http://www.www58058.com/70097
贊~~思路比較清晰~后面操作的部分建議使用markdown來展示會更好~~加油