1.合并行

zj@zj:~/Script/blog_script$ cat test1
1
2
3
4
合并上下两行
zj@zj:~/Script/blog_script$ sed '$!N;s/\n/\t/' test1
1    2
3    4
合并匹配模式及其下一行
zj@zj:~/Script/blog_script$ sed '/2/{N;s/\n/\t/}' test1
1
2    3
4
合并所有行
zj@zj:~/Script/blog_script$ sed ':a;N;s/\n/\t/;ba;' test1
1    2    3    4

2.交换行
2.1已知行号时交换两行
zj@zj:~/Script/blog_script$ cat test
baidu music so terrible so bad
microsoft haha haha
yahoo byebye
google princess so good 
这里是交换1,4行.当然你可以根据自己需要修改
zj@zj:~/Script/blog_script$ for(( i=1;i<=4;i++ )); do  case $i in 1) sed -n 4p test;; 4) sed -n 1p test;; *) sed -n ${i}p test;; esac; done
google princess so good 
microsoft haha haha
yahoo byebye
baidu music so terrible so bad
连续时好说:
zj@zj:~/Script/blog_script$ sed '1{h;d};2{G}' test
microsoft haha haha
baidu music so terrible so bad
yahoo byebye
google princess so good

2.2不知道行号
要交换的两行是连续行的情况下:
zj@zj:~/Script/blog_script$ sed '/baidu/{h;d};/microsoft/{G}' test
microsoft haha haha
baidu music so terrible so bad
yahoo byebye
google princess so good
ps:交换包含bai与microsoft的行
两行不连续的情况:

zj@zj:~/Script/blog_script$ sed '/baidu/{:a;N;/google/!ba;s/\([^\n]*\)\n\(.*\)\n\(.*\)/\3\n\2\n\1/}' test
google princess so good 
microsoft haha haha
yahoo byebye
baidu music so terrible so bad
ps:交换含有baidu与google的行

研究了下写了个不论连续不连续的都可以的:
zj@zj:~/Script/blog_script$ sed '/baidu/{:a;N;/microsoft/!ba;/[^\n]*baidu[^\n]*\n[^\n]*microsoft[^\n]*$/{s/\([^\n]*baidu[^\n]*\)\n\(.*\)/\2\n\1/};s/\([^\n]*\)\n\(.*\)\n\(.*\)/\3\n\2\n\1/}' test
microsoft haha haha
baidu music so terrible so bad
yahoo byebye
google princess so good

zj@zj:~/Script/blog_script$ sed '/baidu/{:a;N;/google/!ba;/[^\n]*baidu[^\n]*\n[^\n]*google[^\n]*$/{s/\([^\n]*baidu[^\n]*\)\n\(.*\)/\2\n\1/;};s/\([^\n]*\)\n\(.*\)\n\(.*\)/\3\n\2\n\1/}' test
google princess so good 
microsoft haha haha
yahoo byebye
baidu music so terrible so bad

ps:上面代码
/baidu/{....}  遇到含有baidu的行,开始做{}中的命令序列
:a;N;/google/!ba  循环读信息,直到读取google.
/[^\n]*baidu[^\n]*\n[^\n]*google[^\n]*$/这个就是说如果哦baidu与google之间只有一个\n,即这两个是连续行就:{s/\([^\n]*baidu[^\n]*\)\n\(.*\)/\2\n\1/;}交换这两行

如果不匹配上面的模式就是说不是连续行了.
s/\([^\n]*\)\n\(.*\)\n\(.*\)/\3\n\2\n\1/}
而在匹配连续行的情况下是不可能匹配上面表达式的.ok~~~~

3.忘了还有交互奇偶行
zj@zj:~/Script/blog_script$ sed '$!N;s/\([^\n]*\)\n\([^\n]*\)/\2\n\1/' test
microsoft haha haha
baidu music so terrible so bad
google princess so good 
yahoo byebye

4.删除行就不用说了吧
d喽....

5.删除空行
sed '/^$/d' test2
删除多个空行为一个空行
sed '/^$/{N;/^\n*$/D}' test2

转载于:https://www.cnblogs.com/huangmr0811/p/5570935.html

sed行处理详解(交换行,合并行,删除行等)相关推荐

  1. java 导出如何合并列_Java导出excel时合并同一列中相同内容的行思路详解

    一.有时候导出Excel时需要按类别导出,一大类下好几个小类,小类下又有好几个小小类,就像下图: 要实现这个也不难, 思路如下:按照大类来循环,如上就是按照张江校区.徐汇校区.临港校区三个大类循环,然 ...

  2. sed -i命令详解

    sed -i命令详解 [root@www ~]# sed [-nefr] [动作] 选项与参数: -n :使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被 ...

  3. java excel中重复数据 事务处理_Java导出excel时合并同一列中相同内容的行思路详解...

    一.有时候导出Excel时需要按类别导出,一大类下好几个小类,小类下又有好几个小小类,就像下图: 要实现这个也不难, 思路如下:按照大类来循环,如上就是按照张江校区.徐汇校区.临港校区三个大类循环,然 ...

  4. Python 命令行参数详解

    Python 命令行参数详解 0. 命令行参数 1. sys.argv 2. getopt 2.1 getopt.getopt 方法 2.2 Exception getopt.GetoptError ...

  5. PowerBuilder命令行编译详解[1]

    PowerBuilder命令行编译详解[1] www.educity.cn   发布者:bin0725   来源:网络转载   发布日期:2013年05月28日    公司的系统是使用PB9.0 + ...

  6. ownCloud/Nextcloud OCC命令行工具详解

    OCC命令行工具详解 ownCloud/Nextcloud OCC命令行工具详解(1) ownCloud/Nextcloud OCC命令行工具详解(2) ownCloud/Nextcloud OCC命 ...

  7. linux命令行使用ppt,linux命令行系统详解.ppt

    linux命令行系统详解.ppt (161页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 29.9 积分 第2章 命令与示例 1为什么要学习命令?命令对于 ...

  8. ASP.NET 操作Cookie详解 增加,修改,删除

    ASP.NET 操作Cookie详解 增加,修改,删除 Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密).定义于RFC2109.它 ...

  9. python 遍历list删除元素_详解Python遍历列表时删除元素的正确做法

    这篇文章主要介绍了详解Python遍历列表时删除元素的正确做法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 一.问题描述 这是 ...

最新文章

  1. mysql show命令用不了_MySQL show命令的用法 | 很文博客
  2. 统计字符串中指定字符出现次数(Java)
  3. linux 删除乱码文件
  4. 改变UITableView的headerView、footerView背景颜色
  5. 利用BIOS 中断INT 0x10显示字符和字符串
  6. 下述程序有什么问题?
  7. 八数码问题II-bfs和map标记
  8. C++:函数指针是个什么玩意儿?
  9. 基于JMS规范的ActiveMQ
  10. python接口自动化发送get请求 详解(一)
  11. Linux之chmod命令
  12. 抖音上python有用吗_专栏 | 如何在抖音上找到漂亮小姐姐?这里有个Python抖音机器人...
  13. 哈尔滨理工大学计算机学院竞赛,计算机学院成功举办学院Arduino创意设计竞赛...
  14. 答云淡风轻:汉化Rails报错信息,部署发布,NT服务
  15. 硬盘分区无法打开,提示“文件或目录损坏且无法读取”
  16. “华为“和“荣耀”区别日益明显,荣耀传递潮流价值观
  17. AutoCAD正版软件多少钱?企业应该采购多少license?
  18. Ubuntu一键部署Yunzai-Bot v3
  19. eMMC工作模式 - 超详细原理讲解
  20. 万字长文分享,新手小白如何自学Java(方法+步骤)

热门文章

  1. 【HDU1203 HDU2955 01背包中的简单概率问题处理】
  2. [YTU]_2477( C++习题 抽象基类)
  3. matlab读取/播放视频的函数(2)
  4. python:字典,元组
  5. 管与c++中容量的重新分配问题
  6. java 数据分析库_超级好用的 Java 数据可视化库:Tablesaw
  7. 第十八讲 傅里叶变换
  8. div 上禁止复制的css实现方法
  9. laravel数据迁移的时候遇到的字符串长度的问题
  10. 本app(仿手机支付宝界面)ios源码