我有这个:
A abc
B abc
C abc
D abc
...
Run Code Online (Sandbox Code Playgroud)
我需要有这样的文件输出:
A abc B abc
B abc C abc
C abc D abc
D abc ..
...
Run Code Online (Sandbox Code Playgroud)
我试过这个:
sed 'N;s/\n/ /'但这会删除下一行。
和sed:
sed '1{h;$p;d;};H;x;s/\n/ /;$G' file
Run Code Online (Sandbox Code Playgroud)
阅读第一行时;该行被存储到保存空间 ( h ) 中。如果它也是最后一行(仅由一行组成的文件),那么它将被打印出来($p)。否则,不会被打印。然后删除模式空间并开始下一个循环(d)。
在后续的每一行上:将换行符和刚刚读取的行附加到保留空间 ( H ),然后交换保留空间和模式空间 ( x )。换行符被替换为空格 ( s/\n/ / )。如果它是最后一行,则刚刚读取的行将被附加到当前模式空间,并带有前导换行符($G)。
您能否尝试以下根据所示示例编写的内容。在https://ideone.com/6BGYTy中编写并测试
awk 'prev{print prev,$0} {prev=$0}' Input_file
Run Code Online (Sandbox Code Playgroud)
或者如果您想打印最后一行,请尝试:
awk 'prev{print prev,$0} {prev=$0} END{print}' Input_file
Run Code Online (Sandbox Code Playgroud)
说明:简单地检查条件是否 prev 不为空,然后打印 prev 和当前行。然后将 prev 的值设置为当前行。因此,在第一行中,它不会打印任何内容,但从第二行开始,它将按照 OP 显示的示例打印行。