Transformer un txt file en nouveau txt file
Résolu/Fermé
k34450
Messages postés
6
Date d'inscription
dimanche 20 octobre 2013
Statut
Membre
Dernière intervention
21 octobre 2013
-
20 oct. 2013 à 18:08
k34450 Messages postés 6 Date d'inscription dimanche 20 octobre 2013 Statut Membre Dernière intervention 21 octobre 2013 - 21 oct. 2013 à 14:00
k34450 Messages postés 6 Date d'inscription dimanche 20 octobre 2013 Statut Membre Dernière intervention 21 octobre 2013 - 21 oct. 2013 à 14:00
A voir également:
- Transformer un txt file en nouveau txt file
- Host file - Guide
- .Bin file - Guide
- .Dat file - Guide
- Swf file player - Télécharger - Lecture
- File magic - Télécharger - Traitement de texte
6 réponses
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
21 oct. 2013 à 11:16
21 oct. 2013 à 11:16
en utilisant une ligne contenant | comme séparateur
$ awk '/[|]/ && n++ {print ""} {printf $0 ";"} END {print ""}' fichier
'S1234567|123';'OLT';'456.0000';'RIT';'0';
'S9876543|456';'OLT';'34235.0000';'RIT';'9876.0000';
'S2468642|789';'OLT';'7654.0000';'RIT';'43215.0000';
$
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
21 oct. 2013 à 09:15
21 oct. 2013 à 09:15
hello
$ awk '{printf $0 ";"} !(NR%5) {print ""}' fichier
'S1234567|123';'OLT';'456.0000';'RIT';'0';
'S9876543|456';'OLT';'34235.0000';'RIT';'9876.0000';
'S2468642|789';'OLT';'7654.0000';'RIT';'43215.0000';
$
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
21 oct. 2013 à 09:40
21 oct. 2013 à 09:40
Salut,
Bien joué, mais s'il y a plus de 5 champs, t'es mal ;-))
Bien joué, mais s'il y a plus de 5 champs, t'es mal ;-))
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
21 oct. 2013 à 09:45
21 oct. 2013 à 09:45
NR%7 non ?
quel est le critère pour passer à la ligne ?
PS: il te manque les ; en fin de ligne
quel est le critère pour passer à la ligne ?
PS: il te manque les ; en fin de ligne
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
21 oct. 2013 à 10:33
21 oct. 2013 à 10:33
NR%7 non ?
Oui, je me doute.
quel est le critère pour passer à la ligne ?
On n'en sait rien, perso je me suis basé sur une ligne commençant par
PS: il te manque les ; en fin de ligne
Effectivement je n'avais pas fais attention ;-\
Merci.
Oui, je me doute.
quel est le critère pour passer à la ligne ?
On n'en sait rien, perso je me suis basé sur une ligne commençant par
'S, d'où mon clin d'oeil sur le nombre de champs ;-)
PS: il te manque les ; en fin de ligne
Effectivement je n'avais pas fais attention ;-\
sed -n '1h;:z;$ba;n;/^\x27S/ba;H;bz;:a;x;s/\n\|$/;/g;p;d'
Merci.
k34450
Messages postés
6
Date d'inscription
dimanche 20 octobre 2013
Statut
Membre
Dernière intervention
21 octobre 2013
21 oct. 2013 à 10:53
21 oct. 2013 à 10:53
Hello dubeck
La ça marche mais effectivement de temps en temps il y a plus de 5 champs.
La ça marche mais effectivement de temps en temps il y a plus de 5 champs.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
21 oct. 2013 à 08:45
21 oct. 2013 à 08:45
Salut,
$ cat plop
'S1234567|123'
'OLT'
'456.0000'
'RIT'
'0'
'S9876543|456'
'OLT'
'34235.0000'
'RIT'
'9876.0000'
'S2468642|789'
'OLT'
'7654.0000'
'RIT'
'43215.0000'
$ sed -n '1h;:z;$ba;n;/^\x27S/ba;H;bz;:a;x;s/\n/;/g;p;d' plop
'S1234567|123';'OLT';'456.0000';'RIT';'0'
'S9876543|456';'34235.0000';'RIT';'9876.0000'
'S2468642|789';'7654.0000';'RIT';'43215.0000'
$
k34450
Messages postés
6
Date d'inscription
dimanche 20 octobre 2013
Statut
Membre
Dernière intervention
21 octobre 2013
21 oct. 2013 à 10:53
21 oct. 2013 à 10:53
Hello zipe31
Je suis entrain de tester la commande
sed -n '1h;:z;$ba;n;/^\x27S/ba;H;bz;:a;x;s/\n/;/g;p;d' plop
Le système affiche le message suivant: "Label too long"
De ce fait rien ne se produit, est ce que tu sais pourquoi
Merci
Je suis entrain de tester la commande
sed -n '1h;:z;$ba;n;/^\x27S/ba;H;bz;:a;x;s/\n/;/g;p;d' plop
Le système affiche le message suivant: "Label too long"
De ce fait rien ne se produit, est ce que tu sais pourquoi
Merci
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
21 oct. 2013 à 11:09
21 oct. 2013 à 11:09
Quel système ? Quelle version de sed ?
Essaie de mettre les commandes sed dans un fichier :
Et de l'appeler comme suit :
Essaie de mettre les commandes sed dans un fichier :
$ cat script.sed
#n
1 h
:z
$ b a
n
/^\x27S/ b a
H
b z
:a
x
s/\n\|$/;/g
p
d
Et de l'appeler comme suit :
$ sed -f script.sed plop
'S1234567|123';'OLT';'456.0000';'RIT';'0';
'S9876543|456';'34235.0000';'RIT';'9876.0000';
'S2468642|789';'7654.0000';'RIT';'43215.0000';
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
k34450
Messages postés
6
Date d'inscription
dimanche 20 octobre 2013
Statut
Membre
Dernière intervention
21 octobre 2013
21 oct. 2013 à 11:50
21 oct. 2013 à 11:50
Le système est SunOS
Version sed je ne sais pas
Ok Je vais tester de mettre tout ça dans un file
Version sed je ne sais pas
Ok Je vais tester de mettre tout ça dans un file
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
21 oct. 2013 à 12:24
21 oct. 2013 à 12:24
sur SunOS, utiliser nawk plutot que awk
https://forums.commentcamarche.net/forum/affich-28932265-transformer-un-txt-file-en-nouveau-txt-file#9
https://forums.commentcamarche.net/forum/affich-28932265-transformer-un-txt-file-en-nouveau-txt-file#9
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
21 oct. 2013 à 12:26
21 oct. 2013 à 12:26
Je doute que sur SunOS, même dans un fichier, que la solution sed fonctionne.
Mieux vaut privilégier la solution de dubcek avec nawk.
Mieux vaut privilégier la solution de dubcek avec nawk.
k34450
Messages postés
6
Date d'inscription
dimanche 20 octobre 2013
Statut
Membre
Dernière intervention
21 octobre 2013
21 oct. 2013 à 12:54
21 oct. 2013 à 12:54
Hello zipe31, dubeck
Alors avec script.sed ça fonctionne sauf que tout est sur une seule ligne
Effectivement il faudrait faire un retour à la ligne pour avoir en début de chaque lignes les données comme suit
'S1234567|123';'OLT';'456.0000';'RIT';'0'; ici retour à ligne
'S9876543|456';'34235.0000';'RIT';'9876.0000';ici retour à la ligne
'S2468642|789';'7654.0000';'RIT';'43215.0000'; ici retour à la ligne
Merci
Alors avec script.sed ça fonctionne sauf que tout est sur une seule ligne
Effectivement il faudrait faire un retour à la ligne pour avoir en début de chaque lignes les données comme suit
'S1234567|123';'OLT';'456.0000';'RIT';'0'; ici retour à ligne
'S9876543|456';'34235.0000';'RIT';'9876.0000';ici retour à la ligne
'S2468642|789';'7654.0000';'RIT';'43215.0000'; ici retour à la ligne
Merci
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
21 oct. 2013 à 13:16
21 oct. 2013 à 13:16
Chez moi avec Gnu/sed le retour est fait. Pour toi c'est la faute à ta version installée sur ton système SunOS.
Privilégies la solution de dubcek avec nawk.
Privilégies la solution de dubcek avec nawk.
21 oct. 2013 à 14:00
C'est parfait ça marche avec ta commande et nawk
Un grand merci à vous 2
Salutations
K34450;-))