cal
コマンドの出力で今日の日付を強調したいと思います。最良の方法は何ですか?
これは私がこれまでに持っているものです:
cal -m | grep -C6 --color "$(date +%e)"
ただし、日付が1桁の場合など、すべての場合に機能するとは限りません。また、1年間のカレンダーを表示するときに、強調表示を機能させたいです。
正規表現だけで年暦_cal -y
_の日を強調表示する方法がわかりませんが、例が機能しなかった理由1桁の日付は$(date +%e)
日付が1桁の場合、出力の前にスペースを追加します。
これは機能します:
_cal | grep --color -EC6 "\b$(date +%e | sed "s/ //g")"
_
出力はすでに強調表示されているため、手動で強調表示する必要はありません。 grepで動作させたい場合は、無効にする必要があります。
cal -mh | grep -C6 --color "$(date +%e)"
私のシステム(openSUSE 11.4、util-linux-2.19)では、出力がターミナルに送られると、出力形式calの現在の日付が自動的に強調表示されます(逆の色)。マンページによると、これがデフォルトのようです。システムで動作しない場合は、バグである可能性があります。
このようなことをするのはかなり複雑かもしれません。
pal のようなものを試してみませんか?
スペースを削除するには、date +%-e
の代わりにコマンドdate +%e
を使用できると思います。
BSDシステムの場合なしgrep --color
オプション:
B=$(tput bold)
U=$(tput sgr0)
DAY=$(date +%e | tr -d " ")
cal | sed -E -e "s|(.*[^0-9])($DAY)([^0-9].*)|\1$B\2$U\3|"
一発ギャグ:
cal | sed -E -e "s|(.*[^0-9])($(date +%e | tr -d " "))([^0-9].*)|\1$(tput bold)\2$(tput sgr0)\3|"
左側に週番号があります:
cal -m -w | sed -E -e "s|(.*) ([[ 0-9]+])$|\2 \1|" -e "1,2s|^| |" -e "s|(.*[^0-9])($(date +%e | tr -d " "))([^0-9].*)|\1$(tput bold)\2$(tput sgr0)\3|"