sed行处理详解 :交换行,合并行,删除行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sed行处理详解 :交换行,合并行,删除行相关的知识,希望对你有一定的参考价值。

sed行处理详解(交换行,合并行,删除行



多行合并一行:

 cat xai
303728
303778
304175
304176
304261
304470
awk ‘{if(NR%2==0){printf $0 "\n"}else{printf "%s:",$0}}‘ xai 

303728:303778
304175:304176
304261:304470


 sed ‘N;s/\n/ :/‘ xai 
303728 :303778
304175 :304176
304261 :304470


合并上下两行:

 sed ‘$!N;s/\n/\t/‘ xai
303728  303778
304175  304176
304261  304470

合并匹配模式及其下一行:

 sed ‘/304175/{N;s/\n/\t/}‘ xai
303728
303778
304175  304176
304261
304470

合并所有行:

 sed ‘:a;N;s/\n/\t/;ba;‘ xai
303728  303778  304175  304176  304261  304470



2.交换行
2.1已知行号时交换两行:

这里是交换1,4行.当然你可以根据自己需要修改

 cat xai
303728
303778
304175
304176
304261
304470
 for(( i=1;i<=4;i++ )); do  case $i in 1) sed -n 4p xai;; 4) sed -n 1p xai;; *) sed -n ${i}p xai;; esac; done               
304176
303778
304175
303728

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

本文出自 “~” 博客,谢绝转载!

以上是关于sed行处理详解 :交换行,合并行,删除行的主要内容,如果未能解决你的问题,请参考以下文章

合并声明行以获得唯一值

editplus经常用的快捷键Editplus 选中一行ctrl+r,Edit 合并行 Ctrl+Shift+J 合并选定行 删除当前行

sed的用法

使用合并时删除某些行

matlab中如何交换矩阵的行或者列

如何使用 UPDATE 合并和删除 SQL 中的重复行?