Comment supprimer la ligne 7 d'un fichier en Bash ?
J'ai essayé
$ sed -i '7d' ~/demo
error:sed: 1: "~/demo": command a expects \ followed by text
Comment supprimer la ligne 7 d'un fichier en Bash ?
J'ai essayé
$ sed -i '7d' ~/demo
error:sed: 1: "~/demo": command a expects \ followed by text
De man sed
:
SYNOPSIS
sed [-Ealnru] command [-I extension] [-i extension] [file ...]
Donc, si vous utilisez -i
vous devez également spécifier une extension pour le fichier de sauvegarde. Si vous ne voulez pas qu'un fichier de sauvegarde soit créé, mais que vous continuez à éditer dans le fichier, utilisez la commande ''
.
sed -i '' '7d' ~/demo
Pour prendre le numéro de la ligne à supprimer dans une variable, utilisez
DELETE_LINE=7
sed -i '' "${DELETE_LINE?}d" ~/demo
$(VAR?}
permet au shell de lancer une erreur si la variable n'est pas définie. Cela évite d'exécuter la commande sans numéro de ligne (ce qui supprimerait toutes les lignes).
PS : Il est intéressant de noter que sed '7d' -i '' ~/demo
ne fonctionne pas (même si le synopsis laisse entendre qu'il le devrait). sed -e '1d' -i '' ~/demo
le fait cependant.
LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.