sed:在crontab中切换注释 [英] sed: toggle comments in crontab
本文介绍了sed:在crontab中切换注释的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的目标是创建一个脚本,该脚本对crontab进行以下更改。任何未注释的cron条目都会被注释,而任何注释的条目都会被取消注释。我的crontab注释中没有数字,所以我相信我列出的逻辑是合理的:
1)备份crontab 2)更改crontab- 如果该行以任何数字开头,请注释该行
- 如果该行以注释开头,后跟数字,请取消该行的注释 3)重新加载crontab。
我特别需要有关步骤2的帮助。我已使用此命令注释所有行,但我发现很难获得进一步的帮助:
sed -i 's/^([^#])/#1/g' Crontab.txt
有没有人对我实现上述目标有什么建议?如有任何帮助,我将不胜感激。
推荐答案
您可以使用sed
轻松切换注释。
sed -i '# If line is a comment, uncomment
# (replace s with [ ] if your sed does not support s for whitespace)
s/^s*#//
# If the previous action did something, skip the rest
t
# If we are still here, comment out this entry
s/^/#/' Crontab.txt
如果您的sed
方言听不懂s
,您可以使用注释中的替代[...]
表达式。(这是括号内的空格和制表符。您可以在许多shell中使用ctrl-V选项卡输入文本制表符。)
若要仅切换第一个非注释字符是数字的位置,请稍微调整正则表达式。
sed -i 's/#([0-9])/1/;t;s/^([0-9])/#1/' Crontab.txt
同样,也存在一些方言变体;并不是所有的sed
实现都需要在分组圆括号前使用反斜杠,也不是所有的sed
实现都需要使用分号作为语句分隔符。这里的主要目的是使用反向引用来捕获数字并在替换中引用它。
(在crontab条目的第一个字段中,星号也是允许的字符;如果要包括星号,只需在两个位置的0-9
之后添加星号即可。)
这篇关于sed:在crontab中切换注释的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文