且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

sed常用

更新时间:2022-09-12 22:24:32



【打印】

nl /etc/issue | sed -n  '1,2p'


解释

1,2 指定行

p 打印的动作

-n 选项默认不输出。(sed 默认的是不匹配的也将输出) -n 选项和p行为时长一起出现。




【替换】

语法:sed ’s#正则#不可用正则表达式#g’  作用替换为空

如: 更改salt-minion配置文件  /etc/salt/minion  修改master和id

正常字符之间的替换

1
sed  -i  's/#master: salt/master: 10.59.72.1/g' /etc/salt/minion

使用系统变量的:

1
sed -i  "s/#id:/id: `hostname`/g"   /etc/salt/minion


【分组替换】

()起来的分组,可以使用\1代替第一个分组,\n代替第n个分组

1
ifconfig eth0 | sed -n 's#^.*inet addr:\(.*\)  Bcast.*$#\1#gp'


【替换】


【指定行插入】

首行插入

1
sed -i '1i\newlineword\n'  /etc/issue


指定行后面追加()

nl /etc/issue | sed '1,2i\insert oneline\n换行符'



解释:

1,2 行指定的位置

i 为 插入(在指定位置处插入)




【删除指定行】

把第一行第二行删除

nl /etc/issue | sed  '1,2d'  



【模式匹配地址】

匹配地址Addresses的方式有

1、地址行指定如 

    单行: 1

    多行: 1,2

    $表示最后一行:3,$

    addr1,+N: nl /etc/issue | sed -n  '1,+2p'

    addr1,~N: nl /etc/passwd | sed -n  '2,~3p'  从第二行开始到3的倍数为止

    first~step: nl /etc/passwd | sed -n  '2~3p' 打印first+N*step步长的行


2、正则匹配

    /regexp/ 正则匹配: nl /etc/issue | sed -n  '/[cC]ent[oO][sS]/p'

     

3、取反

    不匹配行的取反:nl /etc/passwd | sed -n  '/nologin/!p'

            nl /etc/passwd | sed  '/nologin/!d' 

    


实例: 打印奇数行

nl /etc/passwd | sed -n  '1~2p'


删除#开头的

sed  -e '/release/d' -e '/^#/d' file.cnf


 



【正则表达式】

特殊字符意义

&表示引用前面匹配的字符

# sed -i 's/root/(&)/g' test                   




[被替换的字符串中含有变量]

zone="ipo.com"

echo "a.txt.ip.cn| "sed "s#.$zone.##g"

本文转自残剑博客51CTO博客,原文链接http://blog.51cto.com/cuidehua/1787190如需转载请自行联系原作者


cuizhiliang