catのかわりにgawk 1 を使う

catのかわりにgawk 1 を使う

2021年2月10日
ネット、計算機のお伴

複数のテキストファイルを一つにまとめたい時に、

cat a.txt b.txt > all.txt

などとするとa.txtの最後の文字列に改行コードなしのEOFで終わっている場合、b.txtの冒頭行とくっついたりする。あるある。

それを回避するためのtipsをネットでみて(どこに書いてあったのかは忘れてしまった)、愛用している。

gawk 1 a.txt b.txt > all.txt

とすれば、awkは、a.txtとb.txtを別物としてあつかって、改行コードが入る。

1は、awkが、なにもactionしない場合も、最後に行を入れてくれるというわけで、

awk -F”=” ‘{OFS=”=”;なんちゃら}1’

の末尾1で使われていたりするが、引数でもかけることが判明。

gawk ‘{print}’ a.txt b.txt > all.txt

と等価らしいが(1は{print}のエイリアスである、という表現をどっかでみた)、1書くだけというのはとてもすばらいしい。