sed:編輯器
sed:Stream EDitor,行編輯器;
用法:
sed [option]... 'script' inputfile...
script:
"位址指令"
常用選項:
-n:不輸出模式中的内容至螢幕;
-e:多點編輯;
-f /PATH/TO/SCRIPT_FILE:從指定檔案中讀取編輯腳本
-r:支援使用擴充正規表達式;
-i:原處編輯;
位址定界:
(1)不給位址:對全文進行處理;
(2)單位址:
#:指定的行;
/pattern/:被此處能夠比對到的每一行;
(3)位址範圍:
編輯指令:
d:删除 如:sed '1,10d' /etc/fstab #1-10行内容不顯示
p:顯示模式空間中的内容 如:sed '/^UUID/p' /etc/fstab #符合條件的又顯示了一次
n:僅列印比對的行 如:sed -n '/^UUID/p' /etc/fstab #-n隻列印比對的,p和d正好相反,d是删除比對的
a \text:在行後面追加文本;支援使用\n實作多行追加;
i \text:在行前面插入文本;支援使用\n實作多行插入;
c \text:替換符合條件的行,為單行或多行文本
w /path/to/somefile:儲存模式空間中比對到的行至指定檔案中;
=:為模式空間中的行列印行号;
r /path/from/somefile:讀取指定檔案的文本流至模式空間中比對到的行的行後;
!:取反條件;
s///:支援使用其它分隔符,s@@@,s### 視訊39分鐘
替換标記:
g:行内全局替換;
p:如果替換成功,則顯示之;
w /PATH/TO/SOMEFILE:将替換成功的結果儲存至指定檔案中
[root@c6 ~]# sed '[email protected]@&er@g' /etc/passwd #在root後面加er
rooter:x:0:0:rooter:/rooter:/bin/bash
視訊:46分鐘 52分鐘
練習1:删除/boot/grub/grub.conf檔案中所有以空白開頭的行行首的空白字元;
[root@c6 ~]# sed 's@^[[:space:]]\+@@' /tmp/grub.conf
練習2:删除/etc/fstab檔案中所有以#開頭,後面至少跟一個空白字元的行的行首的#和空白字元;
[root@c6 ~]# sed 's@^#[[:space:]]\+@@' /etc/fstab
練習3:echo一個絕對路徑給sed,取出其基名;
[root@c6 ~]# echo "/etc/sysconfig/" | sed 's@[^/]\+/\?$@@'
/etc/
進階編輯指令:62分鐘
h:把模式空間中的内容覆寫至保持空間中;
H:把模式空間中的内容追加至儲存空間中;
g:從保持空間取出資料覆寫至模式空間;
G:從保持空間取出内容追加至模式空間;
x:把模式空間中的内容與保持空間中的内容進行互換;
n:讀取比對到的行的下一行至模式空間;
N:追加比對到的行的下一行至模式空間;
d:删除模式空間中的行;
D:删除多行模式空間中的所有行;
sed -n 'n;p' FILE 72分鐘
sed '1!G;h;$!d' FILE 1!第一行除外
本文轉自cix123 51CTO部落格,原文連結:http://blog.51cto.com/zhaodongwei/1851767,如需轉載請自行聯系原作者