0
votes

Valeurs dupliquées des colonnes dans un fichier délimité par onglet

Je voudrais dupliquer les valeurs séparées par | , les transformant en nouvelles colonnes.

Le fichier d'exemple de sous-ensemble suivant serait: xxx

Le format souhaité serait: xxx

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.

Merci pour tout plomb.


6 commentaires

Pourquoi 1_a a ce 1 | 1 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)


4 Réponses :


1
votes

Cela devrait fonctionner: xxx

sortie: xxx


0 commentaires

3
votes

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 


1 commentaires

C'est scandaleusement impressionnant.



4
votes

Pourriez-vous s'il vous plaît essayer suivi. XXX PRE>

Explication: EM> STR> Ajout d'une explication pour le code ci-dessus. P>

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


1 commentaires

Serré et simple, il faut gotta <3.



3
votes

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
...


0 commentaires