

Linuxでファイルの各行の後に空行を入れるにはawkかsedを使う
この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。
各行の後に空行を挿入したいことがあったので、awkとsedそれぞれのやり方を試した。
awkでやる場合
awk '1; {print ""}' example.txt1は真として評価されるのでawkのデフォルトアクション(print $0)が走り、各行がそのまま出力される。その直後にprint ""で空行を1つ追加している、という単純な仕組み。
sedでやる場合
sed 'G' example.txtGはホールドスペース(初期状態は空文字列)の内容をパターンスペースの末尾に追記するコマンド。ホールドスペースが空のままなので、結果的に各行の後に空行が入る。空行挿入のイディオムとして割とよく見る形。
GNU sedでもBSD sed(macOS標準)でもGの挙動に差はないので、環境依存を気にする必要はない。
出力を別ファイルに逃がす
sed 'G' example.txt > output.txtoutput.txtが既に存在する場合は上書きされる。元ファイルをその場で書き換えたいならsed -i 'G' example.txtでも良いが、今回は別ファイルに出す方でやった。
結論
awkでもsedでも結果は同じ。手癖でsedのGを使うことが多いけど、awkの1; {print ""}の方が仕組みとして分かりやすい人もいると思う。