1 votes

Comment supprimer la ligne 7 d'un fichier en Bash avec sed ?

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

1voto

nohillside Points 82672

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.com

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.

Powered by:

X