sed命令:
sed是主要是以行爲單位進行處理,可以將數據行進行替換、刪除、新增、選取等的文件處理工具。
常用選項:
sed [options] 'AddressCommand' file ...
-n: 靜默模式,不再默認顯示模式空間中的內容,只顯示被處理的行。
-i: 直接修改原文件。(慎用)
-e SCRIPT -e SCRIPT:可以同時執行多個腳本
-f /PATH/TO/SED_SCRIPT
sed -f /path/to/scripts file
-r: 表示使用擴展正則表達式
常用命令:
a ∶新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)~
c ∶取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!
d ∶刪除,因爲是刪除啊,所以 d 後面通常不接任何東西;
i ∶插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);
p ∶列印,亦即將某個選擇的資料印出。通常 p 會與參數 sed -n 一起運作~
s ∶取代,可以直接進行取代的工作,通常這個 s 的動作可以搭配正規表示法!
1、刪除/etc/grub.conf文件中行首的空白符;
sed -r 's/[[:space:]]//g' /etc/grub.conf
2、替換/etc/inittab文件中"id:3:initdefault:"一行中的數字爲5;
sed 's@\(id:\)[0-9]\(:initdefault:\)@\15\2@g' /etc/inittab,其中\1和\2爲地址空間引用;
3、刪除/etc/inittab文件中的空白行;
sed '/^$/d' /etc/inittab
4、刪除/etc/inittab文件中開頭的#號;
sed 's/^\#//g' /etc/inittab
5、刪除某文件中開頭的#號及後面的空白字符,但要求#號後面必須有空白字符;
sed 's/^\#[[::space:]]+//g' /etc/inittab
6、刪除某文件中以空白字符後面跟#類的行中的開頭的空白字符及#
sed -r 's@^[[:space:]]+#@@g' /etc/inittab
7、取出一個文件路徑的目錄名稱;
echo '/etc/rc.d' | sed -r 's@^(/.*/)[^/]+/?@\1@g'