[SH] Récupérer lignes fichiers texte
Résolu
ZZ2F3
Messages postés
40
Date d'inscription
Statut
Membre
Dernière intervention
-
ZZ2F3 Messages postés 40 Date d'inscription Statut Membre Dernière intervention -
ZZ2F3 Messages postés 40 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un fichier texte de la forme
ligne1
ligne2
ligne3
ligne4
test1
Queue
test2
Queue
test3
Queue
test4
Queue
test5
Queue
test6
Queue
test7
Queue
test8
Queue
test9
Queue
test10
Je travaille en Bash et je voudrais par exemple à partir de ce fichier créer 3 fichiers de la forme :
ligne1
ligne2
ligne3
ligne4
test1
Queue
test2
Queue
test3
Queue
test4
Queue
****
ligne1
ligne2
ligne3
ligne4
test5
Queue
test6
Queue
test7
Queue
test8
Queue
****
ligne1
ligne2
ligne3
ligne4
test9
Queue
test10
Queue
****
J'ai pensé à utiliser sed mais je ne trouve pas la syntaxe pour récupérer les lignes comprises entre i et j.
Je suis sur que la solution est archi simple et c'est pour cela que je vous remercie par avance!
Bonne fin de journée!
J'ai un fichier texte de la forme
ligne1
ligne2
ligne3
ligne4
test1
Queue
test2
Queue
test3
Queue
test4
Queue
test5
Queue
test6
Queue
test7
Queue
test8
Queue
test9
Queue
test10
Je travaille en Bash et je voudrais par exemple à partir de ce fichier créer 3 fichiers de la forme :
ligne1
ligne2
ligne3
ligne4
test1
Queue
test2
Queue
test3
Queue
test4
Queue
****
ligne1
ligne2
ligne3
ligne4
test5
Queue
test6
Queue
test7
Queue
test8
Queue
****
ligne1
ligne2
ligne3
ligne4
test9
Queue
test10
Queue
****
J'ai pensé à utiliser sed mais je ne trouve pas la syntaxe pour récupérer les lignes comprises entre i et j.
Je suis sur que la solution est archi simple et c'est pour cela que je vous remercie par avance!
Bonne fin de journée!
A voir également:
- Récupérer données fichier texte javascript
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
7 réponses
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.
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 questionsed '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 ;)
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]$;-))