Shell 将每隔一行连接到下一行

Shell 将每隔一行连接到下一行,shell,sed,Shell,Sed,在文本文档中,我希望每隔一行连接下一行。我想sed是最合适的?如何做到这一点?这可能适合您: seq 10 | sed '$!N;s/\n/ /' 1 2 3 4 5 6 7 8 9 10 $如果不是最后一行, N将以下行附加到当前行,并且 s/\n/用空格替换第一行(第一行)换行符。除非您确实坚持需要使用它,否则只需使用管道即可 粘贴-d”“-这是最简单的使用方法: 虽然有一个(38)来模拟这一点,如。Simpleawk解决方案: 测试: “在文本文档中”是什么意思?如果使用vim编辑文件,

在文本文档中,我希望每隔一行连接下一行。我想sed是最合适的?如何做到这一点?

这可能适合您:

seq 10 | sed '$!N;s/\n/ /'
1 2
3 4
5 6
7 8
9 10
$如果不是最后一行,
N将以下行附加到当前行,并且

s/\n/
用空格替换第一行(第一行)换行符。

除非您确实坚持需要使用它,否则只需使用管道即可

粘贴-d”“-

这是最简单的使用方法:

虽然有一个(38)来模拟这一点,如。

Simple
awk
解决方案: 测试: “在文本文档中”是什么意思?如果使用vim编辑文件,可以执行以下操作:

:g/./normal J :g//normal J
@MichaelJ.Barber可能重复:您链接的问题不同。OP不希望加入每一行。可能重复的可能重复的也要注意最后一行,如果您有奇数个输入行<代码>序号11 | sed'$!Ns/\n/'
@Johnsyweb With GNU sed这是为了满足需要,但我已经修改了其他sed的解决方案。提示:在我的情况下,文件是在Windows下创建的,所以我需要这样做(注意附加的\r):sed'$!Ns/\r\n/'有人能解释一下吗?如果没有解释,我不知道如何学习如何为不同的用例修改这个语句。很好!
ls |粘贴---
意味着这是POSIX,尽管我找不到明确说明它的注释。请注意,对于文件,
paste a a
复制它两次,可能是因为创建了两个文件描述符,而stdin使用了一个描述符。
awk '{getline b;printf("%s %s\n",$0,b)}' file
[jaypal:~/Temp] seq 11 > file
[jaypal:~/Temp] awk '{getline b;printf("%s %s\n",$0,b)}' file
1 2
3 4
5 6
7 8
9 10
11 
:g/./normal J