sed命令詳解及應用
sed是一種流編輯器,一次處理一行內容,把當前處理的內容存放在一個叫做“模式空間”的緩沖區中。能夠進行數據的替換、刪除、新增等。
語法結構:sed [option] script [file]
常用選項:
-n:禁止輸出模式空間中的內容
-r:支持擴展正則表達式
-e:指定多腳本運行(-e script1 -e script2…)
-f /path/to/scripts:從指定的腳本文件中讀取腳本并運行
-i:直接修改文件(即改即生效)
地址定界:
#:#表示數字,代表特定行
#1,#2:表示從#1行到#2行
/pattern1/,/pattern2/:表示從第一個匹配模式到第二個匹配模式中間的所有行
$:表示最后一行
/string/:表示被string匹配的所有的行
#,/pattern/:表示從第#行開始到被pattern匹配的行 中間所有的行
1~2:表示所有的奇數行
2~2:表示所有的偶數行
sed的編輯命令:
d:刪除模式空間中的行
=:為模式空間中的行加上行號
a \text1 \text2 …:在匹配文本所在行的后面追加內容
i \text1 \text2…:在匹配文本所在行前面加內容
c \text:用text文本替代模式匹配到內容所在的整行內容
p:打印模式匹配的行
s/sting1/string2/:用string來替換string1
g:全局替換
i:不區分大小寫
w /path/to/somefile:將匹配到的內容寫入文件
r /path/to/somefile:在文件的指定內容插入另一個文件的所有內容
應用示例:
- 刪除/tmp/grub2.cfg文件中所有的行的行首的空白字符
sed ‘s/^[[:space:]]\+//g’ /tmp/grub2.cfg
- 刪除/tmp/grub2.cfg中所有以#開頭,且后跟至少跟了一個空白字符的行的行首的#和空白字符
sed ‘s/^#[[:space:]]\+//g’ /tmp/grub2.cfg
- 將/tmp/grub2.cfg文件中的奇數行另存為/tmp/grub3.cf
sed ‘1~2w /tmp/grub3.cfg’ /tmp/grub2.cfg
- echo一個文件路徑給sed命令,取出其基名和取出其路徑名
echo “/etc/sysconfig/network-scripts/ifcfg-em1” | sed ‘s@^.*/\([^/]\+\)/\?$@\1@’
echo “/etc/sysconfig/network-scripts/ifcfg-em1” | sed ‘s@[^/]\+/\?$@@’
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/92403