shell脚本,用于显示当前月份的日历,当前日期替换为*

shell脚本,用于显示当前月份的日历,当前日期替换为*,shell,unix,Shell,Unix,我希望结果如下所示: May 2014 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 我可以使用date | cut-d'-f4 但是当我执行命令时,cal | sed“s/date | cut-d'-f4/*/” 压延机输出没有变化 有人能告诉我哪里出了问题吗 谢谢。将$(…)放在您

我希望结果如下所示:

May 2014
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
我可以使用
date | cut-d'-f4

但是当我执行命令时,
cal | sed“s/date | cut-d'-f4/*/”

压延机输出没有变化

有人能告诉我哪里出了问题吗

谢谢。

$(…)
放在您的
日期| cut-d'-f4
部分周围,以便将其作为脚本执行:

cal | sed“s/$(日期| cut-d'-f4)/*/“

更新: 重新阅读您的问题,我不完全确定您是否要将当前日期替换为
*
,或将
*
添加到当前日期。对于后者,可以使用
&
字符来使用替换中要查找的模式(因此可以添加*而不是仅替换):

cal | sed“s/$(日期| cut-d'-f4)/*/“


您可以通过以下方式找到许多有关sed的信息。

数据| cut-d'-f4作为单个脚本运行,并在您选择的特定日期周围使用单词边界

cal|sed -r "s/\b$(date|cut -d' ' -f4)\b/*/"
此处将以脚本形式运行
$(date | cut-d''-f4)
,输出将用于
sed
选择:

cal|sed -r "s/\bOUTPUT\b/*/"
使用
\b
很重要,因为它表示单词边界。否则,对于当前日期(例如5),所有出现的
5
都将替换为
*

输出:

     July 2015        
Su Mo Tu We Th Fr Sa  
          1  2  3  4  
 *  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

您的结果日历没有意义。