sed

cat file | sed s/foo/bar/ > file不能在同一条管道操作中同时 读写 一个文件
只能先将输出写到临时文件中再用mv命令
正确为sed  's /foo/bar/g' file  > 临时文件 &&  mv  临时文件  file


总结知识点:
#sed [选项] '条件指令' 文件
选项:
-n 屏蔽默认输出
-r 支持扩展正则
-i 修改源文件
----------------------p打印-----------------------------------
sed -n 输出你想输出的行
'/root/p' 打印包含root的行
‘/^bin/p’打印包含以bin开头的行
‘/bash$/p’打印包含bash结尾的行
sed -n '$=' a.txt打印文件行数
 所有p 可以替换成d

sed -n 'n;p' a.txt   输出a.txt的偶数行   n 表示跳过当前行,读入下一行文本

sed -n 'p;n' a.txt   输出a.txt的奇数行   n 表示跳过当前行,读入下一行文本

sed -n '4,+10p' a.txt  打印4到后面的10行

sed -n '2,4p' a.txt  打印第1行 到 第4行

sed -n '2p;6p' a.txt   打印第1行 和 第6行


-----------------d删除-------------------------------------------------------------------------------------

 sed '1d;6d' a.txt    删除第1行 和 第6行

sed '1,6d' a.txt        删除第1行 到 第6行

sed '/xml/d' a.txt     删除包含xml的行

sed '/xml/!d'            删除不包含xml的行
sed '/^$/d'               删除空行
sed '$d'                  删除最后一行

sed '/^$/{n;/^$/d}' a.txt                  删除多余的空行。多个空行只保留一个(结合了正则表达式enter,如果只有一个空行就跳过去)
----------------------------------------------------------------替换
sed 's/xml/XML/' 每行中的第一个xml替换为XML
sed 's/xml/XML/3' 每行中的第3个替换成XML

sed 's/xml//g'                                将所有的xml删除,替换为空

sed  's#/das/czc/x#/111/222/333#' a.txt        将/das/czc/x 替换成/111/222/333(#号代替分割符/,也可以用其他符号代替/更加清晰的表达而已

sed '4,7s/^/#/'  a.txt                      将第4到7行注释掉

sed 's/^#an/an/'                           解除以#an开头的行注释

sed -r 's/^(.)(.*)(.)$/3\2\1/'  将文件中每行的第一个、倒数第1个字符互换『-r打扩展正则。/里面表示一个整体。后面数字反撇号。‘  ‘单引表s执行的项』

sed  's/[0-10000]//'  要加-r打开扩展正则    把数字0到10000删除
sed  -r  's/^       要加-r打开扩展正则(   空格键   )+//'  把文本中的行首空格删除,()里面要打空格
-----------------------------i前面写入   《a 后面追加》   c替换--------------------------------------------------------
sed   ' 2i  故事' /nssswd.txt     将第二行前面写入故事
sed   ' 2a  故事'    将第二行后面追加写入故事
sed   '2c 故事会' 将第二行替换为故事会
sed -i '1c Server'  将主机名替换为Server                     -i 要打开
sed  -i  '$a  111111'   ($表示最后一行,a表示一行后面追加)

目标后面替换

id=733.333.333     用sed把a.txt文件中id=后面的ip733.333.333替换成别的ip192.168.5.100

 sed 's/\(id=\).*/\1192.168.4.100/g' a.txt  把id=后面的 任意字符任意个数 替换城 192.168.4.100,ip前面的数字1是必须要存在的

sed 's/\(id=\)[0-9].*/\1733.333.333/g' a.txt  这是正则方式,意思同上

sed '/^id/cid=111.111.111.111' a.txt   或者通过grep找到目标进行整行替换

文本块处理

i 前面加文本

sed '2iQQ:98989' a.txt  把第2行前面加一行QQ:98989

sed '2,5iQQ:98989' a.txt  把第2到第5行前面加一行QQ:98989

a 后面加文本

sed '2,5axxx' a.txt    把第2行到第5行后面加一行xxx

sed '2axxx' a.txt      把第2行后面加一行xxx

c替换(整行替换)

sed '/^d/cXXX' a.txt     把开头d的整行替换XXX

sed 's/^d/XXX/' a.txt    与s不同,用s的话是只把包含^d的替换成XXX

sed '2cyy' a.txt        相当于把第2行删掉换成yy 而已

多行需要处理时候用\n

sed '2cqq\nww\neeee' a.txt  把第2行后面换成qq,接着下面的行换成ww,eeee

或者用\强制换行

[root@web1 ~]# sed '2cqq\
> qqwweqeqe\
> aaaa\
> 443434' a.txt

/正则/
指令:
p 打印
d 删除
s 替换s/旧/新/g
a 追加
i 插入
c 替换行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值