sed 是一个文本处理工具,能够将数据进行替换、新增、选取等特定工做mysql
格式
sed 选项 动做 文件名nginx
使用sed替换文件中某个域的字段
好比写的一个yaml文件中间有个字段须要修改,能够使用sed在外面命令行进行替换
格式:sed 's/原字符/新的字符/‘ 文件名sql
[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
上面输出的只会输出到屏幕上,并不会修改文件,若是直接替换能够添加-ivim
[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 参数含义指令ide
经常使用命令: 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进行打印code
[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 文件名
在第一行的下面新增一行rabbitmq
[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%