sed处理文本的常用命令-创新互联
sed 是一个文本处理工具,可以将数据进行替换、新增、选取等特定工作
成都创新互联公司网站建设由有经验的网站设计师、开发人员和项目经理组成的专业建站团队,负责网站视觉设计、用户体验优化、交互设计和前端开发等方面的工作,以确保网站外观精美、成都做网站、成都网站制作、成都外贸网站建设易于使用并且具有良好的响应性。格式
sed 选项 动作 文件名
使用sed替换文件中某个域的字段
比如写的一个yaml文件中间有个字段需要修改,可以使用sed在外面命令行进行替换
格式:sed 's/原字符/新的字符/‘ 文件名
[root@zhaocheng ~]# sed 's/systemctl/service/' filetest
root:$1$dDTFylQ3$.vTZKpm7mrra9WMsxvBfW.:18241:0:99999:7
bin:*:17834:0:99999:7:dad
lp:*:17834:0:99999:7ada
sync:*:17834:0:99999:7:::gg
shutdown:*:17834:0:99999:7::da
halt:*:17834:0:99999:7::fsda
nginx:!!:18289::::::daaf
rabbitmq:!!:18297:::::dada
service start mysqld
dadad:nginx:sdada
上面输出的只会输出到屏幕上,并不会修改文件,如果直接替换可以添加-i
[root@zhaocheng ~]# sed -i 's/systemctl/service/' filetest
[root@zhaocheng ~]# cat filetest
root:$1$dDTFylQ3$.vTZKpm7mrra9WMsxvBfW.:18241:0:99999:7
bin:*:17834:0:99999:7:dad
lp:*:17834:0:99999:7ada
sync:*:17834:0:99999:7:::gg
shutdown:*:17834:0:99999:7::da
halt:*:17834:0:99999:7::fsda
nginx:!!:18289::::::daaf
rabbitmq:!!:18297:::::dada
service start mysqld
dadad:nginx:sdada
sed 参数含义指令
常用命令:
a 新增
c 取代
d 删除
i 插入
p 列印
s 取代
删除某行
如果处理文本的时候需要进行一些行的删除,可以使用d,代表删除
不加sed -i 不会删除,不加只会显示屏幕上
[root@zhaocheng]# sed '1d' filetest //删除第一行
[root@zhaocheng]# sed '$d' filetest //删除最后一行
[root@zhaocheng]# sed '1,2d' filetest //删除第一行到第二行
[root@zhaocheng]# sed '3,$d' filetest //删除第三行到最后一行
显示某行
比如处理文本的时候需要提取文本的某个某行
[root@zhaocheng]# sed -n '1p' filetest //显示第一行
[root@zhaocheng]# sed -n '$p' filetest //显示最后一行
[root@zhaocheng]# sed -n '1,2p' filetest //显示第一行到第二行
[root@zhaocheng]# sed -n '3,$p' filetest //显示第三行到最后一行
使用模式进行查询
比如处理比较大的文本想找出这个字段,那么直接可以使用-n 参数显示,动作指定需要提取的关键词,p进行打印
[root@zhaocheng]# sed -n '/bin/p' filetest //查询包括关键字bin所在所有行
[root@zhaocheng]# sed -n '/\$/p' filetest
service start mysqld$
//查询包括关键字$所在所有行,使用反斜线\屏蔽特殊含义,不然识别不出
新增一行或者多行字符串
比如处理文本进行添加字段,并指定添加到某行,可以使用a,是增加,1a就是在第一行下去增加,如果字段比较多可以使用在vim中使用set nu,显示行号,或者直接在命令行使用cat -n 直接显示行号,在命令行使用sed '行数a xxxxxx 文件名
在第一行的下面新增一行
[root@zhaocheng ~]# sed '1a sed is very useful' filetest
bin:*:17834:0:99999:7:dad
sed is very useful
lp:*:17834:0:99999:7ada
sync:*:17834:0:99999:7:::gg
shutdown:*:17834:0:99999:7::da
halt:*:17834:0:99999:7::fsda
nginx:!!:18289::::::daaf
rabbitmq:!!:18297:::::dada
service start mysqld$
dadad:nginx:sdada%
在第2行与第3行增加sed is very useful
[root@zhaocheng ~]# sed '2,3a sed is very useful' filetest
bin:*:17834:0:99999:7:dad
lp:*:17834:0:99999:7ada
sed is very useful
sync:*:17834:0:99999:7:::gg
sed is very useful
进行替代行,这里我将第一行替换成kuberntes,1c就是第一行,c就是替换
[root@zhaocheng ~]# sed '1c kubernetes' filetest
kubernetes
lp:*:17834:0:99999:7ada
sync:*:17834:0:99999:7:::gg
shutdown:*:17834:0:99999:7::da
halt:*:17834:0:99999:7::fsda
nginx:!!:18289::::::daaf
rabbitmq:!!:18297:::::dada
service start mysqld$
dadad:nginx:sdada%
将这个文本的最后一行添加jenkins,$就是最后一行,a是添加
[root@zhaocheng ~]# sed -i '$a jenkins' filetest
[root@zhaocheng ~]# cat filetest
hellp
sync:*:17834:0:99999:7:::gg
shutdown:*:17834:0:99999:7::da
halt:*:17834:0:99999:7::fsda
dadad:nginx:sdada%
jenkins
删除匹配的行,匹配的jenkins这个行,进行删除
[root@zhaocheng ~]# sed -i '/jenkins/d' filetest
[root@zhaocheng ~]# cat filetest
hellp
sync:*:17834:0:99999:7:::gg
shutdown:*:17834:0:99999:7::da
halt:*:17834:0:99999:7::fsda
dadad:nginx:sdada%
匹配文本中带#的并删除掉,这里使用^以#开头/d是删除
[root@zhaocheng ~]# cat filetest
#hellp
#sync:*:17834:0:99999:7:::gg
#shutdown:*:17834:0:99999:7::da
halt:*:17834:0:99999:7::fsda
dadad:nginx:sdada%
[root@zhaocheng ~]# sed -i '/^#/d' filetest
[root@zhaocheng ~]# cat filetest
halt:*:17834:0:99999:7::fsda
dadad:nginx:sdada%
删除文本中每行的首数字
[root@zhaocheng ~]# cat filetest
1fghjkl
2ghjkl;'
3fghjkl;
4dfghjkl;
[root@zhaocheng ~]# sed -i 's/^[0-9]//g' filetest
[root@zhaocheng ~]# cat filetest
fghjkl
ghjkl;'
fghjkl;
dfghjkl;
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网站名称:sed处理文本的常用命令-创新互联
文章来源:http://pwwzsj.com/article/ioidc.html