Ansatzの備忘録

勉強したことあるいはふと思い立ったこと

シェルワンライナー160本ノック問題57

問題57 テーブルのレイアウトの整形

問題のファイルは

https://github.com/shellgei/shellgei160

からダウンロードできる。

半角スペースをうまく入れてテーブルの整形をする問題だった。awk でできないかとしばらく考えたが awk の仕様への理解が足りずうまく実装できなかったのであきらめた。

解答例は

cat table.md | sed 's/|/ & /g' | column -t | sed 's/  |/|/g;s/|  /|/g'

となる。column というコマンドがカギとなる。

もともと考えていた手続きは次のとおりである。まず各列の文字列の最大長を調べる。例えばある列に関して最大5文字だとわかったら、次の処理では5文字だけ文字列の後ろに半角スペースを付け加える。そして今度は先頭から5文字を残してあとは削除する。この一連の手続きを各列に対して行えばよい。

多分 sub 関数を使えばできそうだがなんだかめんどくさくなってきたので今日はやめておく。