标签:
sed也是一个管道命令。
sed [-nefr] [动作]
-n 加上-n参数后,只有经过sed特殊处理的那些行才会被列出来
-e 直接在命令行模式进行sed的动作编辑
-i 直接修改读取的文件内容,而不是由屏幕输出。
-f 直接将sed的动作写在一个文件内,-f filename则可以执行filename内的sed动作
-r sed的动作支持的是扩展型正则表达式的语法
动作说明:
[n1][,n2]function
n1,n2:不见得会存在,一般代表选择进行动作的行数
function的参数:
a: 新增,a的后面可以接字符串,这些字符串会出现在新一行。(目前行的下一行)
c: 替换,c的后面可以接字符串,这些字符串可以替换n1,n2之间的行
d: 删除
i: 插入,i的后面可以接字符串,这些字符串会出现在目前行的前一行
p: 打印,通常与sed -n一起使用
s: 可以部分替换,s动作可以搭配正则表达式。 如: 1,20s/old/new/g
以行为单位的新增/删除功能
nl /etc/passwd | sed ‘2,5d‘ 表示删除2~5行,本应该执行sed -e,但是没有-e也行。sed后的动作,必须用‘ ‘括起来。如果要删除第3到最后一行,则是 nl /etc/passwd | sed ‘3,$d‘,那个"$"代表最后一行
在第二行前增加行。
nl /etc/passwd | sed ‘2i drink tea?‘
在第二行后增加行
nl /etc/passwd | sed ‘2a drink tea?‘
以行为单位的替换与显示功能
nl /etc/passwd | sed ‘2,5c No 2~5 number‘
nl /etc/passwd | sed -n ‘2,5p‘ 只显示2~5行
部分数据的查找并替换的功能
sed ‘s/要被替换的字符串/新的字符串/g‘,可以用空串替换用以删除
例如: /sbin/ifconfig wlan0 | grep ‘inet addr‘| sed ‘s/^.*addr://g‘| sed ‘s/Bc.*//g‘ 可以提取出来ip地址
直接修改文件内容
将regular_express.txt内每一行结尾为‘.‘的换成‘!‘
sed -i ‘s/\.$/\!/g‘ regular_express.txt
标签:
原文地址:http://www.cnblogs.com/chengsheng/p/5658299.html