Unix sed:在crontab中切换注释
我的目标是创建一个脚本,对crontab进行以下修改。任何未注释的cron条目都会被注释,而任何注释的条目都会被注释。我的crontab评论中没有数字,因此我认为我提出的逻辑是合理的: 1) 备份crontab 2) 对crontab进行更改Unix sed:在crontab中切换注释,unix,sed,awk,crontab,Unix,Sed,Awk,Crontab,我的目标是创建一个脚本,对crontab进行以下修改。任何未注释的cron条目都会被注释,而任何注释的条目都会被注释。我的crontab评论中没有数字,因此我认为我提出的逻辑是合理的: 1) 备份crontab 2) 对crontab进行更改 如果该行以任何数字开头,请注释该行 如果行以注释开头,后跟数字,请取消对该行的注释 3) 重新加载crontab 我特别需要第2步的帮助。我已经用它来评论所有行,但我发现很难再进一步: sed -i 's/^\([^#]\)/#\1/g' Cronta
- 如果该行以任何数字开头,请注释该行
- 如果行以注释开头,后跟数字,请取消对该行的注释 3) 重新加载crontab
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
轻松切换注释
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
轻松切换注释
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
轻松切换注释
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
之后添加星号即可。)接近重复:接近重复:接近重复: