Je voudrais dupliquer les valeurs séparées par Le fichier d'exemple de sous-ensemble suivant serait: p> Le format souhaité serait: p> sur l'exemple ci-dessus, l'échantillon 1_B est les valeurs dupliquées à droite du caractère de tuyau de l'échantillon 1_a. P> Merci pour tout plomb. p> p> | code>, les transformant en nouvelles colonnes.
4 Réponses :
Cela devrait fonctionner: sortie: p>
awk code> à la rescousse!
$ awk 'NR==1 {for(i=1;i<=NF;i++)
{t=$i;
sub("A","B",$i);
printf "%s %s ",t,$i}
print ""; next}
{for(i=1;i<=NF;i++)
{split($i,a,"|");
printf "%s %s ",a[1]"|"a[1],a[2]"|"a[2]}
print ""}' file
1_A 1_B 2_A 2_B 3_A 3_B
1|1 0|0 0|0 0|0 0|0 0|0
0|0 0|0 0|0 0|0 1|1 1|1
1|1 1|1 1|1 0|0 1|1 0|0
0|0 1|1 1|1 1|1 0|0 0|0
0|0 1|1 1|1 0|0 0|0 0|0
0|0 0|0 0|0 0|0 0|0 0|0
0|0 1|1 1|1 1|1 0|0 1|1
0|0 0|0 0|0 0|0 1|1 0|0
1|1 1|1 1|1 0|0 0|0 1|1
0|0 0|0 0|0 0|0 0|0 0|0
C'est scandaleusement impressionnant.
Pourriez-vous s'il vous plaît essayer suivi. 1_A 1_B 2_A 2_B 3_A 3_B
1|1 0|0 0|0 0|0 0|0 0|0
0|0 0|0 0|0 0|0 1|1 1|1
1|1 1|1 1|1 0|0 1|1 0|0
0|0 1|1 1|1 1|1 0|0 0|0
0|0 1|1 1|1 0|0 0|0 0|0
0|0 0|0 0|0 0|0 0|0 0|0
0|0 1|1 1|1 1|1 0|0 1|1
0|0 0|0 0|0 0|0 1|1 0|0
1|1 1|1 1|1 0|0 0|0 1|1
0|0 0|0 0|0 0|0 0|0 0|0
Serré et simple, il faut gotta <3.
Encore une fois dans AWK:
1_A 1_B 2_A 2_B 3_A 3_B 1|1 0|0 0|0 0|0 0|0 0|0 0|0 0|0 0|0 0|0 1|1 1|1 ...
Pourquoi
1_a code> a ce
1 | 1 code> dans la sortie (première ligne).
Salut Daniel. C'est parce qu'il duplique la valeur à gauche du caractère de tuyau. Je pense que j'ai oublié de mentionner que les valeurs dupliquées sont des chiffres à droite et à gauche du tuyau.
Qu'est-ce qui est plus préférable pour vous: approche python ou awk? (en termes d'utilisation ultérieure)
@RomanPerekhrest honnêtement awk ...
@Guidebortoli, si vous sentez que vous ignorez / ignoreriez les approches Python, la balise pourrait peut-être être retirée de la question (en raison de l'intention d'une utilisation supplémentaire))
En outre, considérons que le nombre de colonnes est dynamique (pourrait être plus que 3)