[AWK] transformer colonne en ligne.
Résolu/Fermé
A voir également:
- [AWK] transformer colonne en ligne.
- Déplacer une colonne excel - Guide
- Partager photos en ligne - Guide
- Vente en ligne particulier - Guide
- Formule somme excel colonne - Guide
- Trier colonne excel - Guide
3 réponses
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
26 mai 2020 à 13:05
26 mai 2020 à 13:05
hello
$ awk '{t[$1]=t[$1] " " $2} END {for (n in t)print n, t[n]}' file.txt | sort
alr 500
aud 510 511
env 5230
fem 5237 5238 5239
fre 570 555 575
mqs 119 1223 125
red 500 5023 505
tst 595 596
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
Modifié le 25 mai 2020 à 19:30
Modifié le 25 mai 2020 à 19:30
Bonjour
Une solution possible
Bonne chance
Une solution possible
Bonne chance
Merci pour votre réponse.
Ce n'est pas exactement ce que je cherchais...
Car il transforme uniquement ligne en colonne, si j'ai bien compris...
Pour mon cas, il fallait trier par motif aussi ...
J'ai fini par trouver quelque chose avec les tableaux en ksh...
C'est pas du super code, parce que j'ai pas l'habitude des tableaux, mais ca marche.
truc@totot: /home/truc $ cat file.txt
alr 500
aud 510
aud 511
env 5230
fem 5237
fem 5238
fem 5239
fre 570
fre 555
fre 575
mqs 119
mqs 1223
mqs 125
red 500
red 5023
red 505
tst 595
tst 596
Je compare le champs 1 de la ligne précédente...
truc@totot: /home/truc $ NB=1
truc@totot: /home/truc $ cat file.txt | sort -k 1 | while read line
do
NB_AV=$((NB-1))
set -A tab$NB $line
if [ "$(eval echo \${tab$NB[0]})" = "$(eval echo \${tab$NB_AV[0]})" ] ; then
EXPR=$(eval echo "\${tab$NB[1]}")
printf "$EXPR " " "
else
EXPR=$(eval echo "\${tab$NB[0]} \${tab$NB[1]}")
print
printf "$EXPR " " "
fi
NB=$((NB+1))
done
alr 500
aud 510 511
env 5230
fem 5237 5238 5239
fre 555 570 575
mqs 119 1223 125
red 500 5023 505
tst 595 596
Ce n'est pas exactement ce que je cherchais...
Car il transforme uniquement ligne en colonne, si j'ai bien compris...
Pour mon cas, il fallait trier par motif aussi ...
J'ai fini par trouver quelque chose avec les tableaux en ksh...
C'est pas du super code, parce que j'ai pas l'habitude des tableaux, mais ca marche.
truc@totot: /home/truc $ cat file.txt
alr 500
aud 510
aud 511
env 5230
fem 5237
fem 5238
fem 5239
fre 570
fre 555
fre 575
mqs 119
mqs 1223
mqs 125
red 500
red 5023
red 505
tst 595
tst 596
Je compare le champs 1 de la ligne précédente...
truc@totot: /home/truc $ NB=1
truc@totot: /home/truc $ cat file.txt | sort -k 1 | while read line
do
NB_AV=$((NB-1))
set -A tab$NB $line
if [ "$(eval echo \${tab$NB[0]})" = "$(eval echo \${tab$NB_AV[0]})" ] ; then
EXPR=$(eval echo "\${tab$NB[1]}")
printf "$EXPR " " "
else
EXPR=$(eval echo "\${tab$NB[0]} \${tab$NB[1]}")
printf "$EXPR " " "
fi
NB=$((NB+1))
done
alr 500
aud 510 511
env 5230
fem 5237 5238 5239
fre 555 570 575
mqs 119 1223 125
red 500 5023 505
tst 595 596
28 mai 2020 à 15:10
Merci beaucoup...