LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1230|回复: 14

sed 中的正则表达式

[复制链接]
发表于 2007-2-19 09:43:22 | 显示全部楼层 |阅读模式
  1. [sprite@calabash music]$ ccal
  2.                  February 2007  丁亥年正月小18日始
  3. Sun  日   Mon  一   Tue  二   Wed  三   Thu  四   Fri  五   Sat  六
  4. ===================================================================
  5.                                          1 十四    2 十五    3 十六
  6. 4 立春    5 十八    6 十九    7 二十    8 廿一    9 廿二   10 廿三
  7. 11 廿四   12 廿五   13 廿六   14 廿七   15 廿八   16 廿九   17 三十
  8. 18 正月   19 雨水   20 初三   21 初四   22 初五   23 初六   24 初七
  9. 25 初八   26 初九   27 初十   28 十一
复制代码

上面是ccal(http://thunder.eeap.cwru.edu/ccal/ccal.htm)的输出,我想让它在当前的日期突出显示。

  1. #!/bin/bash
  2. TODAY=`date +%d`
  3. ccal | sed 's/ '$TODAY' .../^[[45m&^[[m/'
复制代码

但是11,18,25,这几天找不到。因为前面没有空格。如何用正则表达式把它们找出来?
发表于 2007-2-27 10:26:13 | 显示全部楼层
[ ]? 或者 ?

try try
回复 支持 反对

使用道具 举报

发表于 2007-2-27 11:46:04 | 显示全部楼层
用 (^| ) 行不行?
回复 支持 反对

使用道具 举报

发表于 2007-2-28 15:13:35 | 显示全部楼层
都不用空格可以吗?
  1. ccal | sed 's/'$TODAY' ../^[[45m&^[[m/'
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-28 19:44:32 | 显示全部楼层
[] ?行不通
(|)在sed中如何用?

Post by zhy2111314
都不用空格可以吗?

  1. ccal | sed 's/'$TODAY' ../^[[45m&^[[m/'
复制代码



那找1的时候,11,21,31都找出来了。
回复 支持 反对

使用道具 举报

发表于 2007-2-28 21:18:28 | 显示全部楼层
那可以考虑改下 ccal 的源码让开始出现空格。
回复 支持 反对

使用道具 举报

发表于 2007-3-3 11:07:37 | 显示全部楼层
ccal如何输出中文日历?
回复 支持 反对

使用道具 举报

发表于 2007-3-3 12:31:01 | 显示全部楼层
看了源码, 是计算月相什么的.
值得学习

哪位说一下原理(天文历法)?
回复 支持 反对

使用道具 举报

发表于 2007-3-3 23:29:38 | 显示全部楼层
Post by ys_freedom
ccal如何输出中文日历?

  1. ccal -g
复制代码
回复 支持 反对

使用道具 举报

发表于 2007-3-3 23:37:58 | 显示全部楼层
Post by pointer
看了源码, 是计算月相什么的.
值得学习

哪位说一下原理(天文历法)?

这个需要研究下数学和天文,手边正好有这么一本书介绍这个:

地球绕日一周的时间,即天文年是 365.2422 天,这个小误差逐渐引起了季节和日历关系之间的难以预料的大波动。

这个问题可以用连分数来看待,地球绕日一周需时 365 天 5 小时 48 分 46 秒,也就是:
365 + 5/24 + 48/24*60 + 46/24*60*60 = 365又10463/43200 天
等等,想了解这个搜索下应该就有呵呵,我这里不好说太明白,道理差不多就这样。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表