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