2010-07-30 6 views
3

Excusez-moi si c'est une répétition. J'ai entrées crontab qui ressemblent à:Comment faire une ligne comme commentaire dans SED

* * * * * sleep 15;/etc/opt/wer.sh 
1 * * * * /opt/sfm/qwe/as.sh 

Comment insérer un # sur la ligne qui contient un appel à « as.sh » en utilisant sed?
Comment le décommenter?

Répondre

5

Vous pouvez utiliser:

sed '/\/as.sh/s/^/#/' 

qui remplacera la ligne de départ marqueur zéro largeur avec un caractère de commentaire pour toutes les lignes contenant /as.sh, comme le montre l'exemple suivant:

pax> echo ' 
* * * * * sleep 15;/etc/opt/wer.sh 
1 * * * * /opt/sfm/qwe/as.sh 
' | sed '/\/as.sh/s/^/#/' 

* * * * * sleep 15;/etc/opt/wer.sh 
#1 * * * * /opt/sfm/qwe/as.sh 

Mais vous devez garder à l'esprit un certain nombre de choses.

  • Il est généralement ne suffit pas de changer simplement le fichier, vous devez également aviser cron qu'il doit relire. Ceci est automatique si vous utilisez la commande crontab elle-même, mais vous devrez peut-être envoyer un signal à cron si vous modifiez le fichier directement.
  • Ce n'est pas toujours une bonne idée de désactiver les scripts sur des fichiers système importants. Assurez-vous de savoir ce que vous faites et ne faites confiance à aucun vieux codeur sur le net (y compris moi). Testez-le soigneusement.

Pour se débarrasser du marqueur, utilisez:

sed '/\/as.sh/s/^#//' 

Ceci est l'opération inverse, il trouve les lignes contenant /as.sh et substituer un caractère # au début de la ligne avec rien.

3

Pour ajouter le commentaire:

sed -e "s/\(.*\)\(as.sh\)/\#\1\2/g" 

Pour supprimer le commentaire:

sed -e "s/\(^#\)\(.*\)\(as.sh\)/\2\3/g" 
-2

utilisation crontab pour modifier le crontab de l'utilisateur actuel.

Questions connexes