sed: stream editor , 流/行 编辑器 ;
sed 命令详解:
sed [OPTIONS]... {script-only-if-no-other-script} [input-file]...
OPTIONS:
-n, --quiet, --silent , suppress automatic printing of pattern space /禁止打印pattern space 内容
-e script ,--expression=script ,add the script to the commands to be executed ,支持多级编辑
-f script-file, --file=script-file , add the contents of script-file to the commands to be executed,将命令汇总至script-file 方便执行
-r, --regexp-extended ,use extended regular expressions in the script. 使用扩展正则表达式
-i[SUFFIX], --in-place[=SUFFIX] : 直接编辑原文件
script-only-if-no-other-script :包括地址限定 和 编辑命令;
地址限定:
(1) #,# , 指定单行; $ : 最后一行
(2) #1,+#, 指定多个单行
(3)#,/pattern/ ## 匹配从第# 开始到第一次匹配到/pattern1/之间的行
(4)/pattern1/, /pattern1/
(5)first~step ,Match every step'th line starting with line first.
eg: the address 2~5 will match every fifth line, starting with the second . 从第2行开始,每隔5行;
常见的编辑命令有:
d Delete pattern space. 删除pattern space 中的内容;
p Print the current pattern space. .打印pattern space中的内容
a \text : append , 在匹配到的pattern行的下方追加一行
i \text :insert , 在匹配到的pattern行的上方插入一行
r filename : Append text read from filename. 将filename 追加读入当前匹配到pattern的行的下方
c \text ,Replace the selected lines with text ,替换匹配到pattern行为text ;
w filename, Write the current pattern space to filename. 将匹配到pattern内容的行保存至filename中;
s/regexp/replacement/opts : 将匹配到regexp 的内容替换为replacement
其中,常用opts 有:
g: 全局替换
p: 显示替换成功的行
w /PATH/FILENAME : 将替换成功的结果保存至指定文件中
示例:
>>>sed -n '1,+4p' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
>>>sed '1,/^tome/ d' /etc/passwd
tom:x:4012:4012::/home/tom:/bin/bash
>>>sed -n -e '/^root/a \Superman' -e '/^root/i \superman' /etc/passwd
##删除/etc/init.d/functions 文件中所有以空白字符开头的行的行首的所有空白字符;
>>sed 's@^[[:space:]]\+@@g' /etc/init.d/functions
##删除/etc/fstab文件中所有以#开头的行的行首的# 号及#后面的所有空白字符;
>>>sed 's@^#\+[[:space:]]*@@g' /etc/fstab