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