Linuxでファイルの各行の後に空行を入れるにはawkかsedを使う

  • Linux
  • awk
  • sed

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

各行の後に空行を挿入したいことがあったので、awkとsedそれぞれのやり方を試した。

awkでやる場合

ターミナル
awk '1; {print ""}' example.txt

1は真として評価されるのでawkのデフォルトアクション(print $0)が走り、各行がそのまま出力される。その直後にprint ""で空行を1つ追加している、という単純な仕組み。

sedでやる場合

ターミナル
sed 'G' example.txt

Gはホールドスペース(初期状態は空文字列)の内容をパターンスペースの末尾に追記するコマンド。ホールドスペースが空のままなので、結果的に各行の後に空行が入る。空行挿入のイディオムとして割とよく見る形。

GNU sedでもBSD sed(macOS標準)でもGの挙動に差はないので、環境依存を気にする必要はない。

出力を別ファイルに逃がす

ターミナル
sed 'G' example.txt > output.txt

output.txtが既に存在する場合は上書きされる。元ファイルをその場で書き換えたいならsed -i 'G' example.txtでも良いが、今回は別ファイルに出す方でやった。

結論

awkでもsedでも結果は同じ。手癖でsedのGを使うことが多いけど、awkの1; {print ""}の方が仕組みとして分かりやすい人もいると思う。