Sed suppression N 1ères lignes ki efface tout
Résolu/Fermé
jil
-
19 juil. 2012 à 15:45
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 19 juil. 2012 à 17:36
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 19 juil. 2012 à 17:36
A voir également:
- Sed suppression N 1ères lignes ki efface tout
- Forcer suppression fichier - Guide
- Recuperer message effacé whatsapp - Guide
- Suppression page word - Guide
- Suppression compte instagram - Guide
- Effacer tout l'historique - Guide
3 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 407
19 juil. 2012 à 15:55
19 juil. 2012 à 15:55
Salut,
Si les fichiers sont dans le même répertoire pas la peine de "find" :
Si les fichiers sont dans le même répertoire pas la peine de "find" :
$ ls -1 tata.txt titi.txt toto.txt tutu.txt $ head t* ==> tata.txt <== bla blablla #DATA bli blibli bli ==> titi.txt <== bla blablla #DATA bli blibli bli ==> toto.txt <== bla blablla #DATA bli blibli bli ==> tutu.txt <== bla blablla #DATA bli blibli bli $ sed -s -i.bak '1,/^#DATA/d' t* $ ls -1 tata.txt tata.txt.bak titi.txt titi.txt.bak toto.txt toto.txt.bak tutu.txt tutu.txt.bak $ head t* ==> tata.txt <== bli blibli bli ==> tata.txt.bak <== bla blablla #DATA bli blibli bli ==> titi.txt <== bli blibli bli ==> titi.txt.bak <== bla blablla #DATA bli blibli bli ==> toto.txt <== bli blibli bli ==> toto.txt.bak <== bla blablla #DATA bli blibli bli ==> tutu.txt <== bli blibli bli ==> tutu.txt.bak <== bla blablla #DATA bli blibli bli $
Merci zipe mais ça ne fonctionne pas mieux : ça me vide intégralement les fichiers qui auraient déjà été corrigés (relance la commande une deuxième fois).
:-S
:-S
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 407
19 juil. 2012 à 16:31
19 juil. 2012 à 16:31
Effectivement ;-\
Je cherche à comprendre mais je ne vois pas pourquoi sed traite les fichiers dont les motifs ne sont pas trouvés ;-((
Je cherche à comprendre mais je ne vois pas pourquoi sed traite les fichiers dont les motifs ne sont pas trouvés ;-((
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 407
19 juil. 2012 à 16:40
19 juil. 2012 à 16:40
Il semblerait que le fait de demander un motif qui n'existe pas dans une plage commençant à la 1ère ligne serait l'équivalent d'écrire "sed '1,$d' " ;-(((
Bon, pour contourner il suffit de faire une boucle :
Bon, pour contourner il suffit de faire une boucle :
$ ls -1 tata.txt tata.txt.bak titi.txt titi.txt.bak toto.txt toto.txt.bak tutu.txt tutu.txt.bak $ head * ==> tata.txt <== bli blibli bli ==> tata.txt.bak <== bla blablla #DATA bli blibli bli ==> titi.txt <== bli blibli bli ==> titi.txt.bak <== bla blablla #DATA bli blibli bli ==> toto.txt <== bli blibli bli ==> toto.txt.bak <== bla blablla #DATA bli blibli bli ==> tutu.txt <== bli blibli bli ==> tutu.txt.bak <== bla blablla #DATA bli blibli bli $ sed -s -i.bak '1{:z;N;/.*\n#DATA/! bz;d}' * $ ls -1 tata.txt tata.txt.bak tata.txt.bak.bak titi.txt titi.txt.bak titi.txt.bak.bak toto.txt toto.txt.bak toto.txt.bak.bak tutu.txt tutu.txt.bak tutu.txt.bak.bak $ head * ==> tata.txt <== bli blibli bli ==> tata.txt.bak <== bli blibli bli ==> tata.txt.bak.bak <== bli blibli bli ==> titi.txt <== bli blibli bli ==> titi.txt.bak <== bli blibli bli ==> titi.txt.bak.bak <== bli blibli bli ==> toto.txt <== bli blibli bli ==> toto.txt.bak <== bli blibli bli ==> toto.txt.bak.bak <== bli blibli bli ==> tutu.txt <== bli blibli bli ==> tutu.txt.bak <== bli blibli bli ==> tutu.txt.bak.bak <== bli blibli bli $
Okay, alors j'ai pas essayé parce qu'entre temps je me suis apperçu que tous les fichiers commençaient par PE en début de première ligne :
Donc un coup de
find "/home/user/donnes/" -maxdepth 1 -name "*.txt" -type f -exec sed -s -i.bak '/^PE*/,/^\#DATA/d' {} \;
fonctionne apparemment pas mal non plus.
(le "find" j'en ai réellement besoin dans mon cas)
;-)
Donc un coup de
find "/home/user/donnes/" -maxdepth 1 -name "*.txt" -type f -exec sed -s -i.bak '/^PE*/,/^\#DATA/d' {} \;
fonctionne apparemment pas mal non plus.
(le "find" j'en ai réellement besoin dans mon cas)
;-)
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 407
19 juil. 2012 à 17:03
19 juil. 2012 à 17:03
(le "find" j'en ai réellement besoin dans mon cas
Pourquoi tu dois faire du récursif ?
Pourquoi tu dois faire du récursif ?
je travaille sous Octave.
j'ai besoin d'exécuter des commandes systèmes grace à la fonction "system(la_commande)" ou "la_commande" doit correspondre à ce qu'on entre dans un terminal normalement (à quelques petits détails près au niveau des caractères d'échappement).
j'ai besoin de "find" parce qu'on ne sait pas où on se situe à la base, et que je garde dans une autre variable, la valeur du chemin d'accès créé par l'utilisateur. Et je fais un "find" sur cette variable finalement pour aller chercher "ses" fichiers, et pas d'autres.
Mais à la base je peux être n'importe où dans l'arborescence de l'ordinateur et ça doit marcher quand même ;-)
j'ai besoin d'exécuter des commandes systèmes grace à la fonction "system(la_commande)" ou "la_commande" doit correspondre à ce qu'on entre dans un terminal normalement (à quelques petits détails près au niveau des caractères d'échappement).
j'ai besoin de "find" parce qu'on ne sait pas où on se situe à la base, et que je garde dans une autre variable, la valeur du chemin d'accès créé par l'utilisateur. Et je fais un "find" sur cette variable finalement pour aller chercher "ses" fichiers, et pas d'autres.
Mais à la base je peux être n'importe où dans l'arborescence de l'ordinateur et ça doit marcher quand même ;-)
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 407
19 juil. 2012 à 17:36
19 juil. 2012 à 17:36
Ok ;-)