我希望结果如下:
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/*/"
日历输出没有变化。
有人可以告诉我哪里出错了吗?
感谢。
答案 0 :(得分:2)
将data|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
答案 1 :(得分:0)
将$(...)
放在date|cut -d' ' -f4
部分周围,以便将其作为脚本执行:
cal|sed "s/$(date|cut -d ' ' -f4)/*/"
更新:
重新阅读您的问题我不完全确定您是否要将当前日期替换为*
或将*
添加到当前日期。对于后者,您可以使用&
字符来使用您在替换中寻找的模式(因此您可以添加*而不是仅替换):
cal|sed "s/$(date|cut -d ' ' -f4)/*/"
您可以按照this link找到有关sed的大量信息。