Transformer un txt file en nouveau txt file
Résolu
k34450
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
k34450 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
k34450 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous.
Sous mon environnement unix,
Le contenu de mon fichier texte source se présente comme suit:
'S1234567|123'
'OLT'
'456.0000'
'RIT'
'0'
'S9876543|456'
'OLT'
'34235.0000'
'RIT'
'9876.0000'
'S2468642|789'
'OLT'
'7654.0000'
'RIT'
'43215.0000'
Je souhaiterai avoir un fichier en sortie comme suit:
'S1234567|123';'OLT';'456.0000';'RIT';'0';
'S9876543|456';'OLT';'34235.0000';'RIT';'9876.0000';
'S2468642|789';'OLT';'7654.0000';'RIT';'43215.0000';
N'étant pas très familiarisé avec les outils de scripting shell, awk, sed.
Quelqu'un aurait-il une idée comment faire ?
Merci de bien vouloir m'aider .
k34450 ;-)
Sous mon environnement unix,
Le contenu de mon fichier texte source se présente comme suit:
'S1234567|123'
'OLT'
'456.0000'
'RIT'
'0'
'S9876543|456'
'OLT'
'34235.0000'
'RIT'
'9876.0000'
'S2468642|789'
'OLT'
'7654.0000'
'RIT'
'43215.0000'
Je souhaiterai avoir un fichier en sortie comme suit:
'S1234567|123';'OLT';'456.0000';'RIT';'0';
'S9876543|456';'OLT';'34235.0000';'RIT';'9876.0000';
'S2468642|789';'OLT';'7654.0000';'RIT';'43215.0000';
N'étant pas très familiarisé avec les outils de scripting shell, awk, sed.
Quelqu'un aurait-il une idée comment faire ?
Merci de bien vouloir m'aider .
k34450 ;-)
A voir également:
- Transformer un txt file en nouveau txt file
- .Bin file - Guide
- Host file - Guide
- .Dat file - Guide
- Iso file - Guide
- File renamer - Télécharger - Gestion de fichiers
6 réponses
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';
$
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';
$
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.
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'
$
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
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
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
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
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
C'est parfait ça marche avec ta commande et nawk
Un grand merci à vous 2
Salutations
K34450;-))