awk 演習: 80 文字毎に改行2008年11月15日 03時34分55秒

lp でプリントする時に、一行が 80 文字以上あると、一列に入り切らない。そこで、80 文字毎に改行をする。enscript などが入っていないので、awk が頼りだった。

80 文字毎に文字を簡単に挿入できるプログラムは知らないので、簡単に仕立てあげた。


{ line = $0
  while(length(line) > 80)
  {
    print substr(line, 1, 80)
    line = substr(line, 81)
  }
  print line
}

一列が 80 文字よりある間は、80 文字出力してから 81 文字目からを新しい一行として処理を続ける。

awk は文字を単語毎に扱うのは得意だが、C 言語のように文字単位で扱うのはあまり得意ではない。そのような時は、substr と index 関数が主だった手段になる。