• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

linux sed命令互换包含指定关键字的行

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

a.txt内容如下:

111
222
baidu
333
444
google
555
666

交换包含baidu和包含google的行,得到:

111
222
google
333
444
baidu
555
666

代码1:

sed '/baidu/{:a;N;/google/!ba;s/\([^\n]*\)\n\(.*\)\n\(.*\)/\3\n\2\n\1/}' a.txt

代码1的执行过程:

代码2:

sed '/baidu/{:a;N;/google/{s/\(^[^\n]*\)\(.*\)\(\n\)\([^\n]*$\)/\4\2\3\1/;t};ba}' a.txt 

代码2的执行过程:

代码1和代码2的特点:
1、不需要事先知道baidu和google分别在第几行。
2、不管baidu和google是否相邻,都可以正常处理。
3、如果先出现google后出现baidu,命令需要相应的做调整。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
linux awk删除文本重复行需要注意强制类型转换的问题发布时间:2022-02-10
下一篇:
Linux ACL基本概念及典型用法发布时间:2022-02-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap