sed 删除 Sun Solaris 10 的 crontab 上的主要注释

sed 删除 Sun Solaris 10 的 crontab 上的主要注释

我正在编写一个 sed 命令,该命令应取消 Sun Solaris 10 上 crontab 中条目的注释。

我尝试了两种方法,它们在 Ubuntu 上工作,但在 Sun Solaris 10 上不起作用;它返回sed: illegal option -- E crontab: can't open your crontab file.

crontab -l | sed -E '/#* *([^ ]+  *){5}[^ ]*run_all.sh/s/^#* *//' | crontab -

还 :

crontab -l | sed '/#* *\([^ ][^ ]*  *\)\{5\}[^ ]*run_all.sh\.sh/s/^#* *//' | crontab -

crontab 上的 shell 看起来像:

###15 00 * * * /bill/u01/WORK/ALARMS/run_all.sh > /bill/u01/WORK/ALARMS/`date +\%Y\%m\%d\%H\%M\%S`_RUN_ALL_PROCEDURE.log

答案1

您可能不应该使正则表达式过于复杂。要删除包含字符串的行开头的任何可能的主题标签run_all.sh,您可以执行以下操作:

crontab -l | sed 's/^#*\(.*run_all\.sh\)/\1/' | crontab -

不幸的是,我手头没有 Solaris 系统来测试它。

相关内容