Contenu | Rechercher | Menus

Annonce

La nouvelle clé USB Ubuntu-fr est en prévente
Rendez-vous sur la boutique En Vente Libre

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, à 15: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, à 21:06)


(L et)Ubuntu xenial 16.04.3 et Ubuntu bionic 18.04
  (4.4.0-1xx-generic)
( sous LXDE et gnome-shell )

Hors ligne

#2 Le 05/01/2019, à 16: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, à 22:57)


%NOINDEX%
Un utilitaire méconnu : ncdu

Hors ligne

#3 Le 05/01/2019, à 17: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, à 17:58)


Le mot de passe sudo ne s'affiche pas
Comment bien utiliser les balises BBcode
LIBRARIES ARE NOT BOOK-STORES! − Une souris, des souris. Un souci, des soucis. Une énigme résolue, un problème résolu.
J’ai forké le compteur-couche-tard.

En ligne

#4 Le 05/01/2019, à 18: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 méconnu : ncdu

Hors ligne

#5 Le 05/01/2019, à 18:55

Watael

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

et la redirection ? c'est esthétique, par habitude ?


eval, c'est mal.

Hors ligne

#6 Le 05/01/2019, à 23:03

moko138

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

Oups ! Ôté la dernière redirection, merci Watael !


%NOINDEX%
Un utilitaire méconnu : ncdu

Hors ligne

#7 Le 06/01/2019, à 07:37

arno_lupin

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

Bonjour,

je pense que

sed -i "/motif/,$!d" FICHIER

marcherait.


Ubuntu 18.04.1 LTS (Bionic Beaver) 64-bit .. MATE 1.20.1

Hors ligne

#8 Le 06/01/2019, à 09: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, à 13: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 18.04.1 LTS (Bionic Beaver) 64-bit .. MATE 1.20.1

Hors ligne

#10 Le 07/01/2019, à 21: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


(L et)Ubuntu xenial 16.04.3 et Ubuntu bionic 18.04
  (4.4.0-1xx-generic)
( sous LXDE et gnome-shell )

Hors ligne

#11 Le 07/01/2019, à 21: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