bash コマンド (この場合は grep) の出力を取得し、1 行おきに空白行を挿入したいと思います。
not
like
this ...
but
like
this!
bash でそれを実行するスマートな方法はありますか?
答え1
テキストファイルでこれを行うには多くの方法があります。最も簡単な方法はおそらく
$ sed G filename
答え2
pr
from の使用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 に出力行を 1 つではなく 2 つの改行で区切るように指示します。
もっと
提案されたより短いsedコマンドスチールドライバー、 は:
sed '$!G' file
このG
コマンドは改行を追加し、スペースを保持する最後までパターンスペースデフォルトではホールドスペースは空なので、これは各行の末尾に改行を追加するだけの効果があります。プレフィックスは$!
sedにすべての行でこれを実行するように指示します。を除外する最後の一つ。
答え4
Test
10
20
30
Output
perl -pe "s/$/\n/" test
10
20
30