Question

j'ai File1

A,B,C

et Fichier2

D,E,F

J'essaie d'avoir

AD, AE, AF, BD, BE, BF, CD, CE, CF 

sans succès par

echo {`cat File1`}{`cat File2`}

donnant

{A,B,C}{D,E,F}

Comment résoudre le problème avec Zsh / AWK?

Était-ce utile?

La solution

awk -F, '
    NR==FNR {
        # read lines from File1 into the array f1
        f1[NR]=
A,B,C
1,2,3
next } { # foreach line in File2 split(f1[FNR], words); # get words from corresponding line in File1 sep = "" for (i in words) { for (j=1; j<=NF; j++) { printf("%s%s%s", sep, words[i], $j) sep = ", " } } print "" } ' File1 File2

Si le fichier 1 contient

D,E,F
4,5,6

et le fichier 2 contient

AD, AE, AF, BD, BE, BF, CD, CE, CF
14, 15, 16, 24, 25, 26, 34, 35, 36

puis les sorties de script awk

<*>

Autres conseils

Je ne sais pas zsh, voici ce que j'ai fait avec bash et sed:

echo "A,B,C" >a
echo "D,E,F" >b
for i in `cat a | sed -e "s@,@\n@g"`; 
      do for j in `cat b | sed -e "s@,@\n@g"`; 
      do echo -n "$i$j, "; 
      done ; 
      done | sed -e "s@,\s\$@@"

La sortie est alors:

AD, AE, AF, BD, BE, BF, CD, CE, CF
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top