Découper un fichier texte de taille variable
Résolu/Fermé
christophe06
Messages postés
6
Date d'inscription
lundi 10 septembre 2012
Statut
Membre
Dernière intervention
11 septembre 2012
-
10 sept. 2012 à 17:53
zipe31 Messages postés 36317 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 11 sept. 2012 à 10:44
zipe31 Messages postés 36317 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 11 sept. 2012 à 10:44
A voir également:
- Découper un fichier texte de taille variable
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Taille 32x32 correspondance ✓ - Forum Loisirs / Divertissements
- Dans le texte, un seul mot a réellement été écrit en lettres capitales (majuscules). quel est ce mot ? ✓ - Forum Word
4 réponses
Luipx
Messages postés
2
Date d'inscription
vendredi 7 septembre 2012
Statut
Membre
Dernière intervention
10 septembre 2012
10 sept. 2012 à 17:58
10 sept. 2012 à 17:58
je reboot sur linux et je te fait ca ;)
normalement grâce a un script c'est faisable, et facilement :)
normalement grâce a un script c'est faisable, et facilement :)
zipe31
Messages postés
36317
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 555
10 sept. 2012 à 18:22
10 sept. 2012 à 18:22
Salut,
Contenu du répertoire :
Contenu du fichier "plop" (ton fichier)
Contenu du fichier script.sed (fichier qui sera passé en argument à la commande "sed")
Exécution de la commande "sed"
Contenu du répertoire :
Contenu des fichiers "fichierA" et "fichierB"
Contenu du répertoire :
$ ls plop scrit.sed
Contenu du fichier "plop" (ton fichier)
$ cat plop TITRE_A Ligne_A1 Ligne_A2 ... Ligne_An TITRE_B Ligne_B1 Ligne_B2 ... Ligne_Bn
Contenu du fichier script.sed (fichier qui sera passé en argument à la commande "sed")
$ cat scrit.sed #n 0,/^$/{ w fichierA } /^$/,${ /^$/b w fichierB }
Exécution de la commande "sed"
$ sed -f scrit.sed plop
Contenu du répertoire :
$ ls fichierA fichierB plop scrit.sed
Contenu des fichiers "fichierA" et "fichierB"
$ cat fichierA TITRE_A Ligne_A1 Ligne_A2 ... Ligne_An $ cat fichierB TITRE_B Ligne_B1 Ligne_B2 ... Ligne_Bn
christophe06
Messages postés
6
Date d'inscription
lundi 10 septembre 2012
Statut
Membre
Dernière intervention
11 septembre 2012
11 sept. 2012 à 09:24
11 sept. 2012 à 09:24
Merci bp ; c'est exactement ce que je recherche. Ca marche très bien.
Puis-je abuser ?
- En fait, j'ai 3 champs A, B et C (et non pas 2) ; comment adapter le script sed ??
- Comment supprimer la 1ere ligne ?
Encore merci !
Puis-je abuser ?
- En fait, j'ai 3 champs A, B et C (et non pas 2) ; comment adapter le script sed ??
- Comment supprimer la 1ere ligne ?
Encore merci !
zipe31
Messages postés
36317
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 555
11 sept. 2012 à 09:31
11 sept. 2012 à 09:31
Qu'appelles-tu champ ?
Quelle 1ère ligne ?
Un exemple concret s'il te plaît, merci.
Quelle 1ère ligne ?
Un exemple concret s'il te plaît, merci.
christophe06
Messages postés
6
Date d'inscription
lundi 10 septembre 2012
Statut
Membre
Dernière intervention
11 septembre 2012
11 sept. 2012 à 09:37
11 sept. 2012 à 09:37
Ok, excuse-moi. Mon cas concret :
Des fichiers de mêmes noms, de mêmes format, dans des répertoires différents :
./01/data_ana.csv
./02/data_ana.csv
./03/data_ana.csv
./04/data_ana.csv
...
Il y en a beaucoup !
Un format unique pour chaque fichier composé de 3 parties :
TITRE_A
Ligne_A1
Ligne_A2
...
Ligne_An
TITRE_B
Ligne_B1
Ligne_B2
...
Ligne_Bn
TITRE_C
Ligne_C1
Ligne_C2
...
Ligne_Cn
(j'avais zappé la 3eme partie car je préjugeais de mes capacités à adapter des scripts :-)
Mon besoin :
Avoir au final 3 fichiers distincts fileA, fileB et fileC dans lesquels sont concaténées les lignes d'une même partie de tous les fichiers.
J'ai également besoin de supprimer la ligne TITRE que je connais par ailleurs.
Merci beaucoup !
Des fichiers de mêmes noms, de mêmes format, dans des répertoires différents :
./01/data_ana.csv
./02/data_ana.csv
./03/data_ana.csv
./04/data_ana.csv
...
Il y en a beaucoup !
Un format unique pour chaque fichier composé de 3 parties :
TITRE_A
Ligne_A1
Ligne_A2
...
Ligne_An
TITRE_B
Ligne_B1
Ligne_B2
...
Ligne_Bn
TITRE_C
Ligne_C1
Ligne_C2
...
Ligne_Cn
(j'avais zappé la 3eme partie car je préjugeais de mes capacités à adapter des scripts :-)
Mon besoin :
Avoir au final 3 fichiers distincts fileA, fileB et fileC dans lesquels sont concaténées les lignes d'une même partie de tous les fichiers.
J'ai également besoin de supprimer la ligne TITRE que je connais par ailleurs.
Merci beaucoup !
zipe31
Messages postés
36317
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 555
11 sept. 2012 à 09:40
11 sept. 2012 à 09:40
j'avais zappé la 3eme partie car je préjugeais de mes capacités à adapter des scripts
Oui mais du coup mon script ne vaut plus rien ;-((
j'ai également besoin de supprimer la ligne TITRE que je connais par ailleurs.
Que tu connais ou que tu connais pas ?
Si tu les connais ça m'arrange, dans le cas contraire ça risque d'être plus ardu et l'emploi de "awk" (exemple de dubcek) sera plus adapté je pense...
Oui mais du coup mon script ne vaut plus rien ;-((
j'ai également besoin de supprimer la ligne TITRE que je connais par ailleurs.
Que tu connais ou que tu connais pas ?
Si tu les connais ça m'arrange, dans le cas contraire ça risque d'être plus ardu et l'emploi de "awk" (exemple de dubcek) sera plus adapté je pense...
christophe06
Messages postés
6
Date d'inscription
lundi 10 septembre 2012
Statut
Membre
Dernière intervention
11 septembre 2012
11 sept. 2012 à 09:44
11 sept. 2012 à 09:44
Oui, dsl pour le premier script...
Les titres sont les mêmes pour tous les fichiers et commencent tous par le mot DATE. Voici les 3 titres complets :
DATE;HEURE;IRRADIANCE 1;IRRADIATION 1;IRRADIANCE 2;IRRADIATION 2;TEMP. AMBIANTE 1;TEMP. AMBIANTE 2;TEMP. SURFACE 1;TEMP. SURFACE 2
DATE;HEURE;TENSION COMPOSEE U21;TENSION COMPOSEE U32;TENSION COMPOSEE U13;TENSION RESIDUELLE;INTENSITE PH 1;INTENSITE PH 2;INTENSITE PH 3;FREQUENCE
DATE;HEURE;ENERGIE ACTIVE POS;ENERGIE ACTIVE NEG;ENERGIE REACTIVE POS;ENERGIE REACTIVE NEG;PUISSANCE ACTIVE P;PUISSANCE REACTIVE Q
Les titres sont les mêmes pour tous les fichiers et commencent tous par le mot DATE. Voici les 3 titres complets :
DATE;HEURE;IRRADIANCE 1;IRRADIATION 1;IRRADIANCE 2;IRRADIATION 2;TEMP. AMBIANTE 1;TEMP. AMBIANTE 2;TEMP. SURFACE 1;TEMP. SURFACE 2
DATE;HEURE;TENSION COMPOSEE U21;TENSION COMPOSEE U32;TENSION COMPOSEE U13;TENSION RESIDUELLE;INTENSITE PH 1;INTENSITE PH 2;INTENSITE PH 3;FREQUENCE
DATE;HEURE;ENERGIE ACTIVE POS;ENERGIE ACTIVE NEG;ENERGIE REACTIVE POS;ENERGIE REACTIVE NEG;PUISSANCE ACTIVE P;PUISSANCE REACTIVE Q
dubcek
Messages postés
18583
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
2 février 2023
5 583
11 sept. 2012 à 08:43
11 sept. 2012 à 08:43
hello
$ awk '/^TITRE/ {f=$1} {print > f}' fichier $ $ more T* :::::::::::::: TITRE_A :::::::::::::: TITRE_A Ligne_A1 Ligne_A2 ... Ligne_An <ligne_vide> :::::::::::::: TITRE_B :::::::::::::: TITRE_B Ligne_B1 Ligne_B2 ... Ligne_Bn $
zipe31
Messages postés
36317
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 555
11 sept. 2012 à 10:10
11 sept. 2012 à 10:10
Contenu répertoire
Contenu des fichiers f1 f2 f3
Contenu script.sed
Exécution sur l'ensemble des fichiers
Contenu répertoire
Contenu des 3 fichiers créés
;-))
$ ls f1 f2 f3 script.sed
Contenu des fichiers f1 f2 f3
$ head f* ==> f1 <== DATE;HEURE;IRRADIANCE 1;IRRADIATION 1;IRRADIANCE 2;IRRADIATION 2;TEMP. AMBIANTE 1;TEMP. AMBIANTE 2;TEMP. SURFACE 1;TEMP. SURFACE 2 Ligne_A1_F1 Ligne_A2 ... Ligne_An DATE;HEURE;TENSION COMPOSEE U21;TENSION COMPOSEE U32;TENSION COMPOSEE U13;TENSION RESIDUELLE;INTENSITE PH 1;INTENSITE PH 2;INTENSITE PH 3;FREQUENCE Ligne_B1_F1 Ligne_B2 ... ==> f2 <== DATE;HEURE;IRRADIANCE 1;IRRADIATION 1;IRRADIANCE 2;IRRADIATION 2;TEMP. AMBIANTE 1;TEMP. AMBIANTE 2;TEMP. SURFACE 1;TEMP. SURFACE 2 Ligne_A1_F2 Ligne_A2 ... Ligne_An DATE;HEURE;TENSION COMPOSEE U21;TENSION COMPOSEE U32;TENSION COMPOSEE U13;TENSION RESIDUELLE;INTENSITE PH 1;INTENSITE PH 2;INTENSITE PH 3;FREQUENCE Ligne_B1_F2 Ligne_B2 ... ==> f3 <== DATE;HEURE;IRRADIANCE 1;IRRADIATION 1;IRRADIANCE 2;IRRADIATION 2;TEMP. AMBIANTE 1;TEMP. AMBIANTE 2;TEMP. SURFACE 1;TEMP. SURFACE 2 Ligne_A1_F3 Ligne_A2 ... Ligne_An DATE;HEURE;TENSION COMPOSEE U21;TENSION COMPOSEE U32;TENSION COMPOSEE U13;TENSION RESIDUELLE;INTENSITE PH 1;INTENSITE PH 2;INTENSITE PH 3;FREQUENCE Ligne_B1_F3 Ligne_B2 ...
Contenu script.sed
$ cat script.sed #n /;IRRADIANCE /,/^$/{ //b w irradiance.txt } /;TENSION COMPOSEE/,/^$/{ //b w tension.txt } /;ENERGIE ACTIVE/,${ /;ENERGIE ACTIVE/b w energie.txt }
Exécution sur l'ensemble des fichiers
$ sed -s -f script.sed f*
Contenu répertoire
$ ls energie.txt f1 f2 f3 irradiance.txt script.sed tension.txt
Contenu des 3 fichiers créés
$ cat irradiance.txt Ligne_A1_F1 Ligne_A2 ... Ligne_An Ligne_A1_F2 Ligne_A2 ... Ligne_An Ligne_A1_F3 Ligne_A2 ... Ligne_An $ cat tension.txt Ligne_B1_F1 Ligne_B2 ... Ligne_Bn Ligne_B1_F2 Ligne_B2 ... Ligne_Bn Ligne_B1_F3 Ligne_B2 ... Ligne_Bn $ cat energie.txt Ligne_C1_F1 Ligne_C2 ... Ligne_Cn Ligne_C1_F2 Ligne_C2 ... Ligne_Cn Ligne_C1_F3 Ligne_C2 ... Ligne_Cn
;-))
christophe06
Messages postés
6
Date d'inscription
lundi 10 septembre 2012
Statut
Membre
Dernière intervention
11 septembre 2012
11 sept. 2012 à 10:43
11 sept. 2012 à 10:43
Enorme ! Ca marche nickel !! Chapeau Môssieur !
Au plaisir de te redemander de l'aide :-)
A+
Au plaisir de te redemander de l'aide :-)
A+
zipe31
Messages postés
36317
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 555
11 sept. 2012 à 10:44
11 sept. 2012 à 10:44
De rien ;-)
10 sept. 2012 à 18:07
11 sept. 2012 à 09:12
Je dois en fait processer un grand nombre de fichier qui s'appellent tous data_ana.csv et dont je vais récupérer l'emplacement via cette commande.
find . -name "data_ana.csv" -print
Le but in fine est de concaténer toutes les lignes A dans un même fichier, toutes les lignes B dans un autre fichier...
Thxs !