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%