Comment pourrais-je supprimer la ligne
[[ -f /var/tmp/Li.ksh ]] && /var/tmp/Li.ksh
à partir d'un fichier par une commande perl dans un script ksh?
J'ai essayé:
perl -i -pe "s/[[ -f /var/tmp/Li.ksh ]] && /var/tmp/Li.ksh//" /etc/tl.conf
Mais j'ai eu:
Unmatched [ in regex; marked by <-- HERE in m/[ <-- HERE [ -f / at -e line 1.
shell-script
perl
Diane
la source
la source
\Q
pour échapper à tous les caractères spéciaux suivants. Cela évite d’insérer tous ces caractères "\".Fichier avant
Commande (en utilisant \ Q pour ignorer le caractère spécial des caractères spéciaux dans l'expression régulière)
Fichier après
Remarque: le
changement
-i
à-i.bak
si vous voulez perl faire une sauvegarde du fichier avant les modifications.Vous pouvez également le faire de cette manière (en utilisant un simple test d’égalité de texte, sans regex).
la source
eq
et\Q
Je pense avoir obtenu quelque chose qui fonctionnera pour vous. En gros, je lis dans le fichier actuel et édite une version "modifiée" du fichier moins la ligne correspondante (celle mentionnée dans la question). Cela semble fonctionner pour moi quand je le teste. S'il vous plaît s'il vous plaît ne pas essayer ceci jusqu'à ce que vous faites une sauvegarde au cas où il va mal.
voici le code, modifiez le nom du fichier en fonction de vos besoins, puis exécutez le script "devrait" fonctionner.
Ce n'est pas très joli mais ça marche.
la source