Sed常用操作盘点


新钛云服已为您服务1199


本文详细介绍sed -n参数、-I参数、-e参数的使用,并用例子进行说明。内容提要:

-n参数

  • 实例:选取一段时间的日志
    ......

-i参数

  • 实例:删除第一行
  • 实例:删除2-5行
  • 实例:删除每行最后两个字符
  • 实例:删除每行前两个字符
  • 实例:删除行首的空格
  • 实例;删除空行
  • 第一行上添加一行内容
  • 替换内容
    ......

-e参数

  • -e与不加-e的区别
  • 常用实例sed获取ip
    ......


-n参数

只打印模式匹配的行。

实例:选取一段时间的日志
  • 日期在日志中间的例子

# sed -n '/2019-07-23 09:[0-9][0-9]:[0-9][0-9]/,/2019-07-23 11:[0-9][0-9]:[0-9][0-9]/p' 20190723_teacher.log

注意:该方法后面的时间会选取你该小时的第一条,剩余的不会选取

  • 日期在日志开头的例子:

# sed -n '/2019-07-23 09:25:55/,/2019-07-23 10:25:55/p' accessSuccess.log
  • 查看某时间段到现在的系统日志

# sed -n '/Jun 21 12/,$p' /var/log/messages | less
问题:能够根据时间来查日志的原理是什么?直接写日期的和正则的有什么区别

原理是匹配到第一个和最后一个的全部打印出来,所以要取9点到10点的日志要打印到11点第一条就能确保9点到10点的都打出来了。直接写日期和正则的区别是一个精确匹配一个模糊匹配。

-i参数

直接修改读取的文件内容,而不是输出到终端。


实例:删除第一行
# sed -i '1d' 1.sql

实例:删除2-5行
# sed -i '2,5d' 1.sql

实例:删除每行最后两个字符
# sed -i 's/..$//' 1.sql

实例:删除每行前两个字符
# sed -i 's/..//' 1.sql

实例:删除行首的空格
# sed -i 's/^[[:space:]]*//' 1.sql
# sed -i 's/^[ ]*//' 1.sql
# sed -i 's/^ *//' 1.sql
实例:删除空行
# sed -i '/^$/d' 1.sql

删除配置文件中//号注释行
# sed -i 's#//.*##g' 1.sql

删除配置文件中#号注释行
# sed -i 's#\#.*##g' 1.sql

删除最后一行
# sed -i '$d' 1.sql

删除第一个字符
# sed 's/^.//g' 1.sql

第一行上添加一行内容
# sed -i '1i insert into adid_intention values ' 1.sql

插入字符,匹配文本中B开头的行,行尾追加2008
# sed -i 's/B.*/&2008/' 1.sql

插入字符,匹配文本中B开头的行之前追加2008
# sed -i 's/B.*/2008&/' 1.sql
替换内容,例如将2-5行的内容替换成case
# sed -i '2,5c case' 1.sql

将所有以d或D开头的行里所有的x变成X
# sed '^[dD]/s/x/X/g' 1.sql

替换内容,把aaa替换成bbb
# sed -i 's/aaa/bbb/' 1.sql
# sed -i 's/aaa/bbb/g' 1.sql
# sed -i '1,\$s#bbb#aaa#g' 1.sql
备注:这两种命令格式的区别在于是否有个“g”。没有“g”表示只替换第一个匹配到的字符串,有“g”表示替换所有能匹配到的字符串,“g”可以认为是“global”(全局的)的缩写,第三条1代表第一行,$代表最后一行,1,$代表从第一行到最后一行
分隔符可以任意
# sed -i 's#bbb#aaa#g' 1.sql

-e参数

<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。


-e与不加-e的区别

-e 可以在同一行里执行多条命令,不加 -e 只有 's/11/00/g' 进行了操作

# sed 's/11/00/g' 's/22/99/g' 1.sql
sed:无法读取 s/22/99/g:没有那个文件或目录
a,aaa,aaa,aaa,a00
a,aaa,aaa,aaa,a22
a,aaa,aaa,aaa,a00
Ba,aaa,axa,aaa,a22
a,aaa,aaa,aaa,a

加上 -e 时 's/11/00/g' 与 's/22/99/g' 都进行了操作

# sed -e 's/11/00/g' -e 's/22/99/g' 1.sql
a,aaa,aaa,aaa,a00
a,aaa,aaa,aaa,a99
a,aaa,aaa,aaa,a00
Ba,aaa,axa,aaa,a99
a,aaa,aaa,aaa,a

常用实例:sed获取ip
# ifconfig en0 | sed -e '/inet /!d'  //匹配inet 的不删除
# ifconfig en0 | sed -e '/inet /!d' -e 's/^.*inet//g' //把开头到inet部分替换删除
# ifconfig en0 | sed -e '/inet /!d' -e 's/^.*inet//g' -e 's/netmask.*$//g'  //把netmask到结尾替换删除
# ifconfig en0 | sed -e '/inet /!d' -e 's/^.*inet//g' -e 's/netmask.*$//g' -e 's/[[:space:]]*//g'  //最后去掉首位空格

常用实例:处理以下文件内容,将域名取出并根据域名进行计数排序处理
# cat aaa.log
http://www.tyun.cn/index.html
http://www.tyun.cn/1.html
http://post.tyun.cn/index.html
http://mp3.tyun.cn/index.html
http://www.tyun.cn/3.html
http://post.tyun.cn/2.html

# sed -e 's#^.*//\(.*tyun.*\)/.*html#\1#gp' aaa.log | sort | uniq -c | sort -rn

了解新钛云服

捷报!新钛云服斩获WRE「最佳云服务解决方案创新奖」

企业数字化转型探索闭门交流会成功举办!

新钛云服亮相第七届中国数字化创新博览会

新钛云服荣膺第四届FMCG零售消费品行业CIO年会「年度数字化服务最值得信赖品牌奖」

新钛云服三周岁,公司月营收超600万元,定下百年新钛的发展目标

当IPFS遇见云服务|新钛云服与冰河分布式实验室达成战略协议

新钛云服正式获批工信部ISP/IDC(含互联网资源协作)牌照

深耕专业,矗立鳌头,新钛云服获千万Pre-A轮融资

新钛云服,打造最专业的Cloud MSP+,做企业业务和云之间的桥梁

新钛云服一周年,完成两轮融资,服务五十多家客户

往期技术干货

Kubernetes扩容到7,500节点的历程

低代码开发,全民开发,淘汰职业程序员!

国内主流公有云VPC使用对比及总结

万字长文:云架构设计原则|附PDF下载

刚刚,OpenStack 第 19 个版本来了,附28项特性详细解读!

Ceph OSD故障排除|万字经验总结

七个用于Docker和Kubernetes防护的安全工具

运维人的终身成长,从清单管理开始|万字长文!

OpenStack与ZStack深度对比:架构、部署、计算存储与网络、运维监控等

什么是云原生?

IT混合云战略:是什么、为什么,如何构建?

点????分享

戳????在看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值