Extraction de chaines : grep, awk ???
Fermé
paques
Messages postés
4
Date d'inscription
jeudi 25 mars 2010
Statut
Membre
Dernière intervention
8 juillet 2010
-
25 mars 2010 à 17:47
J-awk - 10 juin 2015 à 10:48
J-awk - 10 juin 2015 à 10:48
A voir également:
- Extraction de chaines : grep, awk ???
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Extraction video youtube - Guide
- Nouvelles chaînes tv 2024 - Accueil - TV & Vidéo
- Vous devez lancer l'extraction depuis un volume précédent pour décompresser ✓ - Forum Compression
- Tv tcl ne trouve pas de chaînes - Forum TV & Vidéo
2 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
25 mars 2010 à 18:33
25 mars 2010 à 18:33
Salut,
A quoi sert la 1ère partie, le fait de récupérer les noms de fichiers ?
C'est indispensable ?
Par ce que si au final c'est juste le fait de récupérer dans chaque fichier la ligne contenant "toto" et la ligna qui suit, "sed" peut faire ça en 2 temps 3 mouvements ;-))
A quoi sert la 1ère partie, le fait de récupérer les noms de fichiers ?
C'est indispensable ?
Par ce que si au final c'est juste le fait de récupérer dans chaque fichier la ligne contenant "toto" et la ligna qui suit, "sed" peut faire ça en 2 temps 3 mouvements ;-))
paques
Messages postés
4
Date d'inscription
jeudi 25 mars 2010
Statut
Membre
Dernière intervention
8 juillet 2010
25 mars 2010 à 20:27
25 mars 2010 à 20:27
Indispensable non, mais j'aurai bien aimé.
Cela dit, c'est indépendant, ça peut rester comme ça et il peut y avoir une autre fonction qui fait le reste, non ?
Donc avec sed, je vais tester mais je ne connais pas encore cette fonction. Si tu peux me mettre sur la piste, je veux bien !
Merci
Cela dit, c'est indépendant, ça peut rester comme ça et il peut y avoir une autre fonction qui fait le reste, non ?
Donc avec sed, je vais tester mais je ne connais pas encore cette fonction. Si tu peux me mettre sur la piste, je veux bien !
Merci
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
Modifié par jipicy le 25/03/2010 à 20:32
Modifié par jipicy le 25/03/2010 à 20:32
Re-
Avec "sed" :
Sinon avec "grep" (et un soupçon de sed) :
Avec "sed" :
sed -s -n '/toto/{N;p}' fich* > fichier_final
Sinon avec "grep" (et un soupçon de sed) :
grep -A1 -h 'toto' fich* | grep -v -- '--' > fichier_final grep -A1 -h 'toto' fich* | sed '/--/d' > fichier_final
J-awk
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
10 juin 2015 à 10:48
10 juin 2015 à 10:48
Ou comment réduire une tache ou awk serait tout aussi bien adapté pour en faire des microtache moins adapté.
C'est pas pour rien que awk a été créé hein (remplacement de grep + sed)
Pour la petite histoire :
awk '/toto/{getline x; print FILENAME" : "$0" ; "x}' *.fic > fichier_final
fait 1, 2 et 3 en une seule ligne (et se permet de luxe de faire de la mise en page : j'ai mis les deux lignes sur une seule, mais tu peux utiliser 2 prints pour la même chose).
Tu peux aussi, pour faire le 1, 2 et 3, le rediriger dans deux fichier :
awk '/toto/{getline x; if(alreadyprint[FILENAME]!=1){print FILENAME > "liste ";alreadyprint[FILENAME]=1} print FILENAME " : "$0" ; "x > "fichier_final"}' *.fic
Et je trouve ça "plus simple" qu'un sed qui ne fait que la moitié ou qu'un mix sed + grep pour faire la totalité. (dsl pour le up, c'est mon coup de gueule du jour pour tout ceux qui veulent remplacer awk par des commandes SED parfois moins adapté)
C'est pas pour rien que awk a été créé hein (remplacement de grep + sed)
Pour la petite histoire :
awk '/toto/{getline x; print FILENAME" : "$0" ; "x}' *.fic > fichier_final
fait 1, 2 et 3 en une seule ligne (et se permet de luxe de faire de la mise en page : j'ai mis les deux lignes sur une seule, mais tu peux utiliser 2 prints pour la même chose).
Tu peux aussi, pour faire le 1, 2 et 3, le rediriger dans deux fichier :
awk '/toto/{getline x; if(alreadyprint[FILENAME]!=1){print FILENAME > "liste ";alreadyprint[FILENAME]=1} print FILENAME " : "$0" ; "x > "fichier_final"}' *.fic
Et je trouve ça "plus simple" qu'un sed qui ne fait que la moitié ou qu'un mix sed + grep pour faire la totalité. (dsl pour le up, c'est mon coup de gueule du jour pour tout ceux qui veulent remplacer awk par des commandes SED parfois moins adapté)
paques
Messages postés
4
Date d'inscription
jeudi 25 mars 2010
Statut
Membre
Dernière intervention
8 juillet 2010
25 mars 2010 à 22:37
25 mars 2010 à 22:37
OK, c'est super sympa.
Je vais tester ça.
Merci jipicy
Je vais tester ça.
Merci jipicy