GNU sed 多行合并成一行

只适用于GNU 的sed工具(linux版本),其他版本的不兼容

mac下可以使用brew intsall gsed 安装gnu-sed

比如:每2行合并成一行

sed -n '1h;1!H;1~2{g;s/\n/*/g;h};1~2!{g;s/\n/-/g;h};${s/*/\n/g;p}'

解释:1~2表示选中第一行和2的倍数行(1,3,5..),1~2!表示选中2,4,6,8..

seq 1 10 | sed -n '1~2p'                                                     

1

3

5

7

9

seq 1 10 | sed -n '1~2!p'

2

4

6

8

10

将n行合并成1行,只需将下图中的2改成n即可,其中星号是换行符的替换符(亦可以是别的符号)

seq 1 10 | gsed -n '1h;1!H;1~2{g;s/\n/*/g;h};1~2!{g;s/\n/-/g;h};$p'

1-2*3-4*5-6*7-8*9-10

举例:每2行合并成一行 

seq 1 10 | sed -n '1h;1!H;1~2{g;s/\n/*/g;h};1~2!{g;s/\n/-/g;h};${s/*/\n/g;p}'
1-2
3-4
5-6
7-8
9-10

举例:每3行合并成一行  

seq 1 10 | sed -n '1h;1!H;1~3{g;s/\n/*/g;h};1~3!{g;s/\n/-/g;h};${s/*/\n/g;p}'

1-2-3

4-5-6

7-8-9

10

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值