sed--命令详解
sed:字符流编辑器(流编辑器)
功能:用于对文件实现曾删改查(增加,删除,修改,查找),其中查找的2大功能是过滤(过滤指定字符串),取行(取出指定行)。
语法格式:
sed 【选项】 【内置命令字符】 【输入文件】
内置字符 a 在指定行后添加一行或多行文本
[root@template ~ 14:37:03]]# cat test.txt
100,zhangsan,ceo
102,wangwu,cto
105,liudehua,cio
106,zhangxueyou,uoo
[root@template ~ 14:37:41]]# sed '2a 107,wangchao,ufo' test.txt #在第二行后添加新的文本
100,zhangsan,ceo
102,wangwu,cto
107,wangchao,ufo
105,liudehua,cio
106,zhangxueyou,uoo
[root@template ~ 14:38:02]]# sed '4a 109,mahan,ooo\n110,liutao,uto' test.txt #在第四行后添加多行
100,zhangsan,ceo
102,wangwu,cto
105,liudehua,cio
106,zhangxueyou,uoo
109,mahan,ooo
110,liutao,uto
内置字符 i 在指定行前添加一行或多行文本
[root@template ~ 14:40:31]]# sed '2i 120,lisi,uuu' test.txt #在第二行前添加新文本
100,zhangsan,ceo
120,lisi,uuu
102,wangwu,cto
105,liudehua,cio
106,zhangxueyou,uoo
内置字符 d 删除指定行的文本
[root@template ~ 14:42:06]]# cat test.txt
100,zhangsan,ceo
102,wangwu,cto
105,liudehua,cio
106,zhangxueyou,uoo
[root@template ~ 14:43:34]]# sed '2d' test.txt
100,zhangsan,ceo
105,liudehua,cio
106,zhangxueyou,uoo
内置字符 s/匹配的内容/替换的内容/--局部替换,s/匹配的内容/替换的内容/g加了g代表全部替换
[root@template ~ 14:47:20]]# cat test.txt
100,zhangsan,ceo
102,wangwu,cto
105,liudehua,cio
106,zhangxueyou,uoo
109,wangwu,uuu
[root@template ~ 14:47:28]]# sed 's#zhangsan#lisi#' test.txt #局部替换
100,lisi,ceo
102,wangwu,cto
105,liudehua,cio
106,zhangxueyou,uoo
109,wangwu,uuu
[root@template ~ 14:47:37]]# sed 's#wangwu#lisi#g' test.txt #全部替换
100,zhangsan,ceo
102,lisi,cto
105,liudehua,cio
106,zhangxueyou,uoo
109,lisi,uuu
内置字符 p 打印匹配的内容
[root@template ~ 14:48:16]]# sed '2p' test.txt #打印出第二行的内容,全部输出是因为sed默认输出的功能
100,zhangsan,ceo
102,wangwu,cto
102,wangwu,cto
105,liudehua,cio
106,zhangxueyou,uoo
109,wangwu,uuu
参数 -n 取消默认输出
[root@template ~ 14:51:29]]# cat test.txt
100,zhangsan,ceo
102,wangwu,cto
105,liudehua,cio
106,zhangxueyou,uoo
109,wangwu,uuu
[root@template ~ 14:51:37]]# sed -n '2,4p' test.txt
102,wangwu,cto
105,liudehua,cio
106,zhangxueyou,uoo
参数 -i 修改内存上的数据的同时也修改了磁盘上的数据
[root@template ~ 14:51:29]]# cat test.txt
100,zhangsan,ceo
102,wangwu,cto
105,liudehua,cio
106,zhangxueyou,uoo
109,wangwu,uuu
[root@template ~ 14:51:42]]# sed -i '2d' test.txt
[root@template ~ 14:54:33]]# cat test.txt
100,zhangsan,ceo
105,liudehua,cio
106,zhangxueyou,uoo
109,wangwu,uuu