sed命令--流編輯器正則表達式
1.工做原理編輯器
指定一個文本文件,依次讀取文本文件中每一行的內容,讀取到模式空間(pattern space)中,在模式空間中進行文本匹配(使用正則表達式),對匹配後的內容進行修改(替換、刪除、打印、修改和保存)spa
2.常見選項3d
-r 指定使用擴展正則表達式
-n 禁止自動打印到空間模式
-e 接腳本語句
-f 指定腳本文件
-l 指定文本換行的長度
-i 直接修改文件內容(須要慎重使用) 字符串
3.地址定界原理
(1)直接匹配數值
示例:sed -n '5p' 文件名 #打印文件中內容的第五行
(2)d~ 步長
示例:sed -n '1~3p' 文件名 #打印文件中內容從第1行開始以3爲步長打印,就是打印第1,4,7,11.....行擴展
擴展:sed -n '1p;3p' 文件名 #打印文件內容中的第一行和第三行sed
(3)$ 指定行尾
示例:sed -n '10,$p' 文件名 #打印文件內容從第10行到最後一行
(4)/正則/
/正則1/,/正則2/
示例:sed -n '/k\{5,\}/,$p' 文件名 #打印文件中匹配k這個字符至少5次的字符並輸出配置
(5)0,addr
addr 能夠爲 數字/$/正則表達式
示例:sed -n '0,/k\{5,\}/p' abc 語法
(6)addr,+N
配置addr行到,addr後N行
示例:sed -n '/fd/,+5p' abc
4.常見命令
p print 打印(默認在屏幕上顯示出來)建議和-n一塊兒使用
i 在匹配的上一行去添加指定內容
示例:sed"/aaa/i\abc" 文件
a 在匹配行的下一行指定添加內容
示例:sed"/aaa/a\abc" 文件
c 替換行
示例:sed "/aaaa/c \A"文件
d 刪除
示例:sed "/aaa/d" 文件
sed "1,3d" 文件
n 讀取/N添加 模式匹配到的行的下一行內容,在對其進行操做
w 保存文件內容到一個新的文件
示例:sed "/pattren/w 新文件" 原來文件
sed "/k/w /tmp/pattern" abc
s 文本內容替換,默認替換模式空間匹配到的第一項
語法格式:s/pattern/字符串/
中間/能夠替換爲任意一個特殊字符,例如:s###s%%%
g---行內全局替換
\1\2 和正則表達式分組相同,實現反向應用;指定某一個匹配項進行修改替換
&---調用前面(pattern)匹配的內容
示例:sed "s/r..t/&er/g" 文件
5.練習
(1)刪除/boot/grub/grub.conf文件中全部空白開頭的行行首的空白字符;
sed 's/^[[:space:]]\+//g' /boot/grub/grub.conf
(2) 刪除/etc/fstab文件中全部以#開頭,後面至少跟一個空白字符的行 的行首的#和空白字符;
sed 's/^#[[:space:]]\+//g' /etc/fstab
(3)給定一個目錄,取出其目錄名
echo "/etc/passwd" | sed 's/[^/]\+$//'
(4)給定一個目錄,取出其文件名 echo "/etc/passwd" | sed 's#^/.*/\(.*\)##