PetaspeedBeaver Asked: 2017-11-23 17:30:29 +0800 CST2017-11-23 17:30:29 +0800 CST 2017-11-23 17:30:29 +0800 CST 如何在任何输出中添加“双行距”?[复制] 772 我想获取 bash 命令的输出(在本例中为 grep)并每隔一行插入一个空行: not like this ... but like this! 在 bash 中做到这一点的聪明方法? bash 5 个回答 Voted fpmurphy 2017-11-23T17:38:55+08:002017-11-23T17:38:55+08:00 有很多方法可以对文本文件执行此操作。最简单的大概是 $ sed G filename Best Answer steeldriver 2017-11-23T18:10:28+08:002017-11-23T18:10:28+08:00 使用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 John1024 2017-11-23T17:34:54+08:002017-11-23T17:34:54+08:00 从如下文件开始: $ 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 用两个换行符而不是一个换行符来分隔输出行。 更多的 如steeldriver所建议的,一个较短的 sed 命令是: sed '$!G' file 该G命令将换行符和保持空间附加到模式空间的末尾。因为,默认情况下,保持空间是空的,这只是在每行的末尾添加一个额外的换行符。前缀告诉 sed 在除最后一行之外的$!所有行上执行此操作。 Jeff Schaller 2017-11-23T17:42:55+08:002017-11-23T17:42:55+08:00 另一个 awk 版本: | awk '{print $0, "\n"}' Praveen Kumar BS 2017-11-23T18:18:58+08:002017-11-23T18:18:58+08:00 Test 10 20 30 Output perl -pe "s/$/\n/" test 10 20 30
有很多方法可以对文本文件执行此操作。最简单的大概是
使用
pr
来自coreutils
:(请注意,这确实将最后一行加倍 - 不像,说,
sed '$!G'
)。来自man pr
:从如下文件开始:
sed 将工作:
awk 也会这样:
1
是 awk 对 print-the-line 的神秘简写,它ORS='\n\n'
告诉 awk 用两个换行符而不是一个换行符来分隔输出行。更多的
如steeldriver所建议的,一个较短的 sed 命令是:
该
G
命令将换行符和保持空间附加到模式空间的末尾。因为,默认情况下,保持空间是空的,这只是在每行的末尾添加一个额外的换行符。前缀告诉 sed 在除最后一行之外的$!
所有行上执行此操作。另一个 awk 版本: