Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix sed:在crontab中切换注释_Unix_Sed_Awk_Crontab - Fatal编程技术网

Unix sed:在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

我的目标是创建一个脚本,对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
    轻松切换注释

    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
    之后添加星号即可。)

    接近重复:接近重复:接近重复: