[SH] Récupérer lignes fichiers texte
Résolu/Fermé
ZZ2F3
Messages postés
40
Date d'inscription
mardi 27 novembre 2007
Statut
Membre
Dernière intervention
30 juin 2009
-
20 août 2008 à 16:51
ZZ2F3 Messages postés 40 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 30 juin 2009 - 21 août 2008 à 13:23
ZZ2F3 Messages postés 40 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 30 juin 2009 - 21 août 2008 à 13:23
A voir également:
- Récupérer données fichier texte javascript
- Fichier rar - Guide
- Recuperer message whatsapp supprimé - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Recuperer video youtube - Guide
7 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
20 août 2008 à 17:04
20 août 2008 à 17:04
Flachy Joe
Messages postés
2103
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
21 novembre 2023
260
20 août 2008 à 17:04
20 août 2008 à 17:04
Et avec une combinaison de head et tail ?
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
20 août 2008 à 17:10
20 août 2008 à 17:10
Non ça ne peut pas marcher. Il veut récupérer aussi des instructions en pleins milieu, ce que ne fait ni head ni tail.
Flachy Joe
Messages postés
2103
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
21 novembre 2023
260
20 août 2008 à 17:13
20 août 2008 à 17:13
Ben si.
Exemple :
Fichier de 20 lignes
head prend les ligne 0 à 15
on fait un tail sur le resultat qui prend les lignes 9 à la fin, c'est à dire 15
on a donc les lignes 9 à 15 du fichier d'origine.
Exemple :
Fichier de 20 lignes
head prend les ligne 0 à 15
on fait un tail sur le resultat qui prend les lignes 9 à la fin, c'est à dire 15
on a donc les lignes 9 à 15 du fichier d'origine.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
20 août 2008 à 17:21
20 août 2008 à 17:21
Oui. Tu fais donc ce que sed peut faire en une instruction. Pratique
Flachy Joe
Messages postés
2103
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
21 novembre 2023
260
20 août 2008 à 17:25
20 août 2008 à 17:25
ah bon, ben en fait je connais pas sed.
Mais si la syntaxe est compliquée, celle de head et tail est simple au possible...
Mais si la syntaxe est compliquée, celle de head et tail est simple au possible...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
20 août 2008 à 17:39
20 août 2008 à 17:39
sed 'a,b !d' fichieraffiche sur la sortie standard les lignes 4, 5 et 6.
head -n b fichier | tail -n $((b-a+1))pour le même résultat ;)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
20 août 2008 à 17:47
20 août 2008 à 17:47
Salut,
Une façon de faire :
Une façon de faire :
[tmpfs]$ ls -1 fich.txt foo.sh* [tmpfs]$ cat fich.txt ligne1 ligne2 ligne3 ligne4 test1 Queue test2 Queue test3 Queue test4 Queue test5 Queue test6 Queue test7 Queue test8 Queue test9 Queue test10 Queue [tmpfs]$ cat foo.sh #! /bin/bash #set -xv var=$(sed -n 1,4p fich.txt) n=1 i=1 j=4 fin=$(sed -n '/test/p' fich.txt | wc -l) while [ "$i" -le "$fin" ] do echo -e "${var}\n" > new_fich"${n}".txt sed -n "/test$i/,/test$j/ {N;p}" < fich.txt >> new_fich"${n}".txt ((n++)) ((i+=4)) ((j+=4)) done [tmpfs]$ ./foo.sh [tmpfs]$ ls -1 fich.txt foo.sh* new_fich1.txt new_fich2.txt new_fich3.txt [tmpfs]$ cat new_fich1.txt ligne1 ligne2 ligne3 ligne4 test1 Queue test2 Queue test3 Queue test4 Queue test10 Queue [tmpfs]$ cat new_fich2.txt ligne1 ligne2 ligne3 ligne4 test5 Queue test6 Queue test7 Queue test8 Queue [tmpfs]$ cat new_fich3.txt ligne1 ligne2 ligne3 ligne4 test9 Queue test10 Queue [tmpfs]$;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
20 août 2008 à 20:36
20 août 2008 à 20:36
Oups ;-((
Il faut remplacer la ligne :
Il faut remplacer la ligne :
sed -n "/test$i/,/test$j/ {N;p}" < fich.txt >> new_fich"${n}".txtpar
sed -n "/test$i\b/,/test$j\b/ {N;p}" < fich.txt >> new_fich"${n}".txt;-))
ZZ2F3
Messages postés
40
Date d'inscription
mardi 27 novembre 2007
Statut
Membre
Dernière intervention
30 juin 2009
21 août 2008 à 13:23
21 août 2008 à 13:23
Merci à tout le monde!
J'ai fait un mix de tout ce que vous m'avez conseillé et j'arrive à un truc qui fonctionne!
En tous cas, merci pour votre rapidité et votre efficacité ;)
Bonne fin de journée!
J'ai fait un mix de tout ce que vous m'avez conseillé et j'arrive à un truc qui fonctionne!
En tous cas, merci pour votre rapidité et votre efficacité ;)
Bonne fin de journée!