Shell: récupération de champ dans une ligne
Résolu
remousse
Messages postés
299
Date d'inscription
Statut
Membre
Dernière intervention
-
dubcek Messages postés 19023 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 19023 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un fichier csv avec plusieurs ligne de ce type:
1;2;3
13;12;11
20;2;3
Et j'aimerai avoir dans un autre fichier ceci:
Champ 1:1
Champ2:2
Champ3:3
Champ 1:13
Champ2:12
Champ3:11
Champ 1:20
Champ2:2
Champ3:3
J'ai donc fait ceci:
Mais cela ne fonctionne pas avec awk.
Avez vous une autre commande qui permettrai d'avoir le résultat souhaité ?
Par avance merci.
J'ai un fichier csv avec plusieurs ligne de ce type:
1;2;3
13;12;11
20;2;3
Et j'aimerai avoir dans un autre fichier ceci:
Champ 1:1
Champ2:2
Champ3:3
Champ 1:13
Champ2:12
Champ3:11
Champ 1:20
Champ2:2
Champ3:3
J'ai donc fait ceci:
for f in *.csv
do
while read line
do
$rep/echo "GROUP_FIELD_NAME:Type_objet" >> $fileName
$rep/echo "GROUP_FIELD_VALUE:'$rep/awk 'BEGIN {FS = ";"}{ print $1 }' $line'" >> $filename
done < $f
done
Mais cela ne fonctionne pas avec awk.
Avez vous une autre commande qui permettrai d'avoir le résultat souhaité ?
Par avance merci.
A voir également:
- Shell: récupération de champ dans une ligne
- Classic shell - Télécharger - Personnalisation
- Secure shell - Télécharger - Divers Web & Internet
- Shell infrastructure host c'est quoi - Guide
- Shell startup windows 10 - Guide
- Shell do while ✓ - Forum Shell
3 réponses
hello
il faut un espace entre Champ et 1 pour Champ1 ?
il faut un espace entre Champ et 1 pour Champ1 ?
$ cat a0
1;2;3
13;12;11
20;2;3
$
$ awk -v RS="[;\n]" '{print "Champ" (NR-1)%3+1 ":" $0}' a0
Champ1:1
Champ2:2
Champ3:3
Champ1:13
Champ2:12
Champ3:11
Champ1:20
Champ2:2
Champ3:3
$
Ok je viens de tester et en sortie j'ai ceci:
Champ1:11;2;3;4;5;6;7;8;9;10;11;12;13
1;2;3;4;5;6;7;8;9;10;11;12;14
13;12;11;10;9;8;7;6;5;4;3;2;1
20;2;3;4;5;6;7;8;9;10;11;12;13
Le 1 est bien renseigné pour champ 1 mais la suite du fichier vient se concaténer.
Voilà exactement ce que j'ai comme code :
Je n'ai pas que 3 champs j'en ai 13 mais est ce que cela fait modifier la commande ? J'ai peut être également mal exposer mon sujet au départ...
Champ1:11;2;3;4;5;6;7;8;9;10;11;12;13
1;2;3;4;5;6;7;8;9;10;11;12;14
13;12;11;10;9;8;7;6;5;4;3;2;1
20;2;3;4;5;6;7;8;9;10;11;12;13
Le 1 est bien renseigné pour champ 1 mais la suite du fichier vient se concaténer.
Voilà exactement ce que j'ai comme code :
$rep/echo "Champ 1:'$rep/awk -v RS="[;\n]" '{print (NR-1)%3+1 $0}' $f'" >> $fileName
$rep/echo "Champ 2:'$rep/awk -v RS="[;\n]" '{print (NR-1)%3+1 $0}' $f'" >> $fileName
$rep/echo "Champ 3:'$rep/awk -v RS="[;\n]" '{print (NR-1)%3+1 $0}' $f'" >> $fileName
Je n'ai pas que 3 champs j'en ai 13 mais est ce que cela fait modifier la commande ? J'ai peut être également mal exposer mon sujet au départ...
il faut exécuter awk qu'une fois
$ cat a00
1;2;3;4;5;6;7;8;9;10;11;12;13
1;2;3;4;5;6;7;8;9;10;11;12;14
13;12;11;10;9;8;7;6;5;4;3;2;1
20;2;3;4;5;6;7;8;9;10;11;12;13
$
$ awk -v RS="[;\n]" '{print "Champ" (NR-1)%13+1 ":" $0}' a00 | head
Champ1:1
Champ2:2
Champ3:3
Champ4:4
Champ5:5
Champ6:6
Champ7:7
Champ8:8
Champ9:9
Champ10:10
$
$