web-dev-qa-db-ja.com

現在の日付をcalで強調表示します

calコマンドの出力で今日の日付を強調したいと思います。最良の方法は何ですか?

これは私がこれまでに持っているものです:

cal -m | grep -C6 --color "$(date +%e)"

ただし、日付が1桁の場合など、すべての場合に機能するとは限りません。また、1年間のカレンダーを表示するときに、強調表示を機能させたいです。

6
dogbane

正規表現だけで年暦_cal -y_の日を強調表示する方法がわかりませんが、例が機能しなかった理由1桁の日付$(date +%e)日付が1桁の場合、出力の前にスペースを追加します。

これは機能します:

_cal | grep --color -EC6 "\b$(date +%e | sed "s/ //g")"
_
7
Jorge Bucaran

出力はすでに強調表示されているため、手動で強調表示する必要はありません。 grepで動作させたい場合は、無効にする必要があります。

cal -mh | grep -C6 --color "$(date +%e)"
3
Braiam

私のシステム(openSUSE 11.4、util-linux-2.19)では、出力がターミナルに送られると、出力形式calの現在の日付が自動的に強調表示されます(逆の色)。マンページによると、これがデフォルトのようです。システムで動作しない場合は、バグである可能性があります。

2
Petr Uzel

このようなことをするのはかなり複雑かもしれません。
pal のようなものを試してみませんか?

1
Chris2048

スペースを削除するには、date +%-eの代わりにコマンドdate +%eを使用できると思います。

0
user103406

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|"
0
maximusin9