#1 Le 05/01/2019, à 14:42
- Sciensous
effacement dans un fichier texte [RÉSOLU]
hello et meilleurs voeux à tous;
une question bête:
comment demander en ligne de commande d'effacer le contenu d'un fichier jusqu'à un motif préci s?
(je pensais à l'équivalent d'un sed -i avec motif /motif1/,/motif2/ mais sans motif1 pour aller jusqu'à motif2)
je cherche des réponses de préférence avec sed (au pire grep)
merci d'avance
ÉDIT: je pense avoir trouvé:
sed -i " 1,/motif/d" FICHIER
mais si je veux garder la ligne avec motif ??
Dernière modification par Sciensous (Le 07/01/2019, à 20:06)
antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )
Hors ligne
#2 Le 05/01/2019, à 15:55
- moko138
Re : effacement dans un fichier texte [RÉSOLU]
Édité, suite à la question de nany.
]Édit 2 : merci Watael !
D'abord
ls -lA FICHIER
pour garder la trace des droits et propriétaire d'origine de FICHIER.
Puis
cat FICHIER | wc -l
wc -l FICHIER
pour vérifier que ton fichier fasse moins de, disons, N lignes.
Ensuite
cat FICHIER | grep -AN motif > /tmp/toto.txt ; cp -v /tmp/toto.txt > FICHIER
grep -AN motif FICHIER > /tmp/toto.txt ; cp -v /tmp/toto.txt FICHIER
Grâce à "-AN", cela fonctionne bien même s'il y a plusieurs occurrences de motif
Enfin, s'ils ont été modifiés, rétablir les droits et propriétaire d'origine de FICHIER.
Dernière modification par moko138 (Le 05/01/2019, à 21:57)
%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel : À la découverte de dcraw
Hors ligne
#3 Le 05/01/2019, à 16:53
- nany
Re : effacement dans un fichier texte [RÉSOLU]
Bonjour,
ÉDIT: je pense avoir trouvé:
sed -i " 1,/motif/d" FICHIER
mais si je veux garder la ligne avec motif ??
sed -ni '/motif/,$p' FICHIER
cat FICHIER | wc -l
cat FICHIER | grep -AN motif […]
Quelle est l’utilité de cat dans ces deux cas ?
Dernière modification par nany (Le 05/01/2019, à 16:58)
En ligne
#4 Le 05/01/2019, à 17:23
- moko138
Re : effacement dans un fichier texte [RÉSOLU]
Quelle est l’utilité de cat dans ces deux cas ?
Aucune, mon général ! (Juste la force de l'habitude).
Ça marchait, mais j'ai allégé, sans "cat".
Merci de ta remarque !
%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel : À la découverte de dcraw
Hors ligne
#5 Le 05/01/2019, à 17:55
- Watael
Re : effacement dans un fichier texte [RÉSOLU]
et la redirection ? c'est esthétique, par habitude ?
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#6 Le 05/01/2019, à 22:03
- moko138
Re : effacement dans un fichier texte [RÉSOLU]
Oups ! Ôté la dernière redirection, merci Watael !
%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel : À la découverte de dcraw
Hors ligne
#7 Le 06/01/2019, à 06:37
- arno_lupin
Re : effacement dans un fichier texte [RÉSOLU]
Bonjour,
je pense que
sed -i "/motif/,$!d" FICHIER
marcherait.
Ubuntu 20.04.1 LTS (Focal Fossa) 64-bit .. MATE 1.24.0
Hors ligne
#8 Le 06/01/2019, à 08:04
- pingouinux
Re : effacement dans un fichier texte [RÉSOLU]
je pense que
sed -i "/motif/,$!d" FICHIER
marcherait.
Ça marche si tu remplaces " " par ' ', pour que $! ne soit pas interprété.
sed -i '/motif/,$!d' FICHIER
Hors ligne
#9 Le 06/01/2019, à 12:12
- arno_lupin
Re : effacement dans un fichier texte [RÉSOLU]
Ça marche si tu remplaces " " par ' ', pour que $! ne soit pas interprété.
oups... forcément
merci pour la rectification pingouinux
Ubuntu 20.04.1 LTS (Focal Fossa) 64-bit .. MATE 1.24.0
Hors ligne
#10 Le 07/01/2019, à 20:05
- Sciensous
Re : effacement dans un fichier texte [RÉSOLU]
merci à tous pour vos réponses qui me conviennent pour mon script.
juste une remarque: dans tous les cas motif doit être mis en brut et non dans une variable à cause des '.
Avec des " le $p ou $!d seraient interprétés, exact ? (sur que oui )
(ou alors échapper les $ avec \$) )
Chouss
antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )
Hors ligne
#11 Le 07/01/2019, à 20:13
- pingouinux
Re : effacement dans un fichier texte [RÉSOLU]
Tu peux adapter la méthode de nany #3
motif=mon_motif
sed -n "/$motif/,\$p" FICHIER
Hors ligne