sed 本身也是一个管道命令,替换删除新增,选取特定航的功能。
sed [-nefr] 功能
参数:
-n:使用安静模式。在一般sed用法中,所有来自stdin的数据一般都会被列出在屏幕上,但如果加上-n,则只有经过sed特殊处理的那一行(或是操作)才会被列出来;
-e:直接在命令行模式上进行sed动作编辑;
-f :直接将sed的动作写到一个文件内,-f filename则可以执行filename内的sed动作;
-r:sed的动作支持的是扩展型正则表达式的语法(默认是基础正则表达式语法);
-i:直接修改读取的文件内容,而不是由屏幕输出;
动作说明: [n1] [,n2] function
n1, n2 :不见得会存在,一般代表选择进行动作的行数,举例来说,如果我的动作时需要在10-20行之间进行的,则“10,20[动作内容]”
function 有下面的这些参数
a:新增,a 的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行);
c:替换,c的后面可以接字符串,这些字符串可以替换n1,n2之间的行;
d:删除,因为是删除,所以d后面通常不接任何参数;
i:插入,i的后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行);
p:打印,也就是将某个选择的数据打印出来,通常p会与参数sed -n 一起运行;
s:替换,可以直接进行替换工作。通常这个s的动作可以搭配;
例如:1,20s/old/new/g.
以行为单位的新增/删除功能
[root@www ~]# nl /etc/passwd | sed '2,5d'
[root@www ~]# nl /etc/passwd | sed '2d'
[root@www ~]# nl /etc/passwd | sed '3,$d'
[root@www ~]# nl /etc/passwd | sed '2a drink tea' | head -n 3 a 在后面新增一行 i 在后面插入
nl /etc/passwd | sed '2a dir ...\
> sdfsdf' 增加2行
[root@www ~]# nl /etc/passwd | sed '2,5c no 2-5 number' 替换2-5行的内容
[root@www ~]# nl /etc/passwd | sed -n '5,7p' 把5-7行取出来
sed 's/要被替换的字符/新的字符/g'
[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g' 删除IP前面的部分,删除IP后面的步伐
[root@www ~]# cat /etc/man.config | grep "MAN" | sed 's/^#.*$//g' | sed '/^$/d' 删除批注后,空白行开头的数据
直接修改文件内容(危险操作)
[root@www ~]# sed -i 's/\.$/!/g' regular_express.txt 以.结尾的换成!
[root@www ~]# sed -i '$a # this is hexudong' regular_express.txt 在文件的结尾新增
阅读(1124) | 评论(0) | 转发(0) |