sed可以分析stdin的数据,然后将数据经过处理输出到strout中。它可以对数据进行添加、替换、插入、删除、打印。下面我们就来看看它的用法
# sed [-nefr] [动作]
- -n :被sed处理过的数据才显示。一般会跟动作p联合使用;
- -e :直接在指令列模式上进行sed的动作编辑;
- -f : 制定文件从中读取数据对其处理;
- -r :sed支持的延伸型正则表达式语法,跟egrep支持正则同理;
这里额外的说下,延伸型正则所支持的特殊符号为:
- +
- ?
- |
- ()
其作用意思就不多说了,学过正则的都知道。。。。
sed其动作:
- a :追加
- c :替换行
- d :删除
- i :插入
- p :打印
- s :替换字符
范例一:显示/etc/passwd内容,并将2至5行删除
# nl /etc/passwd | sed '2,5d'
范例二:显示/etc/passwd内容,并在第2行追加新内容“Hello world”
# nl /etc/passwd | sed '2a Hello world'
范例三:显示/etc/passwd内容,并在第2行行首插入“Hello world”
# nl /etc/passwd | sed '2i Hello world'
范例四:显示/etc/passwd,并将2至5行的内容 替换为“Hello world”
# nl /etc/passwd | sed '2,5c Hello world'
在这里需要注意的是,c与s都是替换,但c是替换整个行,而s是替换字符串已正则的方式。
范例五:仅显示/etc/passwd的2至5行内容
# nl /etc/passwd | sed -n '2,5p'
在这里就体现出n的作用了,你可以将n参数去掉试试看,就可明白其意思。
范例六:仅显示ifconfig eth0 的IP地址
# ifconfig eth0 | grep "inet " | sed 's/.*addr://g' | sed 's/Bcast.*//g'