私はOpenBSDユーザーであり、私が教えるすべてのコースのTeXコースカレンダーを自動的に生成するawkスクリプトを書いています。システムから実際のカレンダーを取得するには、Unixのcalコマンドを使用します。問題は、calコマンドの出力で区切り文字としてスペースが使用されているため、nawkスクリプトを適用するとあらゆる種類の問題が発生することです。私はcalのソースコードを調べましたが、ソースコードをハッキングする以外に、calコマンドにスペース以外の区切り文字を使用させることはできないようです。カレンダーをこのように見せるための最も簡単な方法は何でしょうか
June 2012
Su, Mo, Tu, We, Th, Fr, Sa
, , , , , 1, 2
3, 4, 5, 6, 7, 8, 9
10, 11, 12, 13, 14, 15, 16
17, 18, 19, 20, 21, 22, 23
24, 25, 26, 27, 28, 29, 30
そのためにsed
を使用できます。
$ cal|sed -e '1n;s/\(..\)\(.\)/\1,\2/g'
May 2012
Su, Mo, Tu, We, Th, Fr, Sa
, , 1, 2, 3, 4, 5
6, 7, 8, 9, 10, 11, 12
13, 14, 15, 16, 17, 18, 19
20, 21, 22, 23, 24, 25, 26
27, 28, 29, 30, 31
1n
は最初の行を出力し、次の行に移動します。次に、置換は文字を3 x 3で取得し、最初の2つ、次に,
、次に3番目を出力します。