shell四剑客之sed

格式:sed [-nefri] [动作]
其中n/e/f/r/i
动作有a,i,c,p,s

-n  默认把sed命令执行的结果,与原来的数据一起输出到屏幕,如果加了-n,则只显示sed处理后的内容
sed -n '1p' sed.txt 

a   在匹配的当前行的后面添加内容,add
sed '/Simple/ahelloworld' sed.txt   world后面有符号/则会直接显示出来

i   在匹配的当前行的上面添加内容,insert
sed '/Beautiful/ihelloyou' sed.txt

&   在当前行匹配字符串的行尾添加字符串
sed 's/than/&hellworld/' sed.txt    则直接在than的后面添加字符串hellworld

c   把该行替换成c后面的字符串
sed '2,4c hello world' sed.txt  2-4行的内容替换成hello world

s   旧字符替换新字符,行数s/旧字符串/新字符串/g
sed 's/than/hello/' sed.txt
sed 's/than/hello/g' sed.txt
sed '2s/than/hahaha/' sed.txt 匹配第二行的
sed '2,4s/than/hahaha/' sed.txt 匹配第二行到第四行的

/pa/s/pa1/pa2/  查找包含pa的行,然后把该行的第一个匹配pa1的字符串替换为pa2
/pa/s/pa1/pa2/g 查找包含pa的行,然后把该行所有的匹配pa1的字符串替换为pa2,g即代表global
sed '/Beautiful/s/than/hahaha/' sed.txt
sed '/Beautiful/s/than/hahahah/g' sed.txt
sed '/by/s/^/hello/' sed.txt    在包含by行的头加上hello
sed '/by/s/^/&hello/' sed.txt

p   输出,默认
sed '1,3p' sed.txt  显示匹配的1-3行内容和原来内容
sed -n '1,3p' sed.txt  只显示匹配行的内容
sed -n '2p;$p' sed.txt	显示第二行和最后一行的内容,中间用分号隔开,多行可以sed -n '2p;3p;$p' sed

d   删除
sed '/start/ ,/end/d' file  删除包含第start行到第end行之间的所有行内容
sed '/start/, 8d' file          删除包含第start行到第八行的内容
sed '1d' sed.txt    删除第一行
sed '2,3d' sed.txt  删除第二到三行
sed '/Simple/,$d' sed.txt  删除匹配行到最后一行

-e  多个命令组合,对文件内容执行多条sed命令条件
sed -e '/Simple/s/better/worse/' -e '/Flat/s/better/good/' sed.txt 

;   多个命令组合,注意引号位置
sed -e '/Complex/s/than/less/ ; /Flat/s/than/well/' sed.txt

变量引用,需要先设置变量,不能用系统变量
abc=123
sed "s/Simple/$abc/g" sed.txt

-i  把sed命令修改的结果直接写入到文件里去,一般用来编辑文件内指定内容,屏幕不输出内容
如果要对所做的修改保存到原文件,则要加上-i,就会直接修改原文件内容
sed -i '/bash/s/bin/sbin/' sed.txt

-f  指定执行sed脚本的文件名,可以把常用的或者是command比较长的内容写到一个文件中
vim sedcommand
s/Simple/difficult/
sed -f sedcommand sed.txt
另外可以在一个文件里填写多个条件,然后分别匹配
vim sedcommand
s/Simple/difficult/
1p

-r  支持扩展正则表达式的语法,默认是基础正则表达式

演示例子
cat sed.txt
The Zen of Python, by Tim Peters
Beautiful is better than ugly.than
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
/sbin/bash
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值