如何為任何輸出添加“雙倍行距”?

如何為任何輸出添加“雙倍行距”?

我想獲取 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

相關內容