只适用于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