我正在编写一个 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 系统来测试它。