如何为任何输出添加“双倍行距”?

如何为任何输出添加“双倍行距”?

我想获取 bash 命令(在本例中为 grep)的输出并每隔一行插入一个空行:

not
like
this ...

but

like

this!

在 bash 中做到这一点的聪明方法?

答案1

对于文本文件有很多方法可以做到这一点。最简单的可能是

$ sed G filename

答案2

使用pr来自coreutils

$ grep '' file | pr -Td
not

like

this ...

(请注意,最后一行双倍行距 - 与sed '$!G') 不同。从man pr

   -d, --double-space
          double space the output

   -T, --omit-pagination
          omit page headers and trailers, eliminate any pagination by form
          feeds set in input files

答案3

从如下文件开始:

$ cat >file
not
like
this ...

sed 将工作:

$ sed 's/$/\n/' file
not

like

this ...

awk 也是如此:

$ awk 1 ORS='\n\n' file
not

like

this ...

1是 awk 的 print-the-line 的神秘简写,它ORS='\n\n'告诉 awk 用两个换行符而不是一个换行符来分隔输出行。

更多的

更短的 sed 命令,如建议的钢铁起子, 是:

sed '$!G' file

G命令附加一个换行符和保留空间到最后模式空间。由于默认情况下,保留空间是空的,因此这只会在每行末尾添加一个额外的换行符。前缀$!告诉 sed 在所有行上执行此操作除了最后一个。

答案4

Test
10
20
30

Output
perl -pe "s/$/\n/" test 
10

20

30

相关内容