[AWK] transformer colonne en ligne.
Résolu/Fermé
A voir également:
- [AWK] transformer colonne en ligne.
- Vente en ligne particulier - Guide
- Déplacer une colonne excel - Guide
- Partage photo en ligne gratuit - Guide
- Apparaitre hors ligne instagram - Guide
- Aller à la ligne excel - Guide
3 réponses
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 616
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
33030
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
28 mars 2024
7 736
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...