Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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,


Sciensous a écrit :

É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



moko138 a écrit :
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)

Hors ligne

#4 Le 05/01/2019, à 17:23

moko138

Re : effacement dans un fichier texte [RÉSOLU]

nany a écrit :

Quelle est l’utilité de cat dans ces deux cas ?

Aucune, mon général !  big_smile  (Juste la force de l'habitude).

Ça marchait, mais j'ai allégé, sans "cat".

Merci de ta remarque !  smile


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

Hors 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]

arno_lupin #7 a écrit :

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]

pingouinux a écrit :

Ç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 wink )
(ou alors échapper les $ avec \$) )

Chouss  smile


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