Wörter in Dateien von ZSH/awk können nicht kombiniert werden
Frage
Ich habe Datei1
A,B,C
und Datei2
D,E,F
Ich versuche es zu haben
AD, AE, AF, BD, BE, BF, CD, CE, CF
erfolglos von
echo {`cat File1`}{`cat File2`}
geben
{A,B,C}{D,E,F}
Wie können Sie das Problem durch ZSH/AWK lösen?
Lösung
awk -F, '
NR==FNR {
# read lines from File1 into the array f1
f1[NR]=$0
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
Wenn Datei1 enthält
A,B,C
1,2,3
und Datei2 enthält
D,E,F
4,5,6
Dann gibt das awk -Skript aus
AD, AE, AF, BD, BE, BF, CD, CE, CF
14, 15, 16, 24, 25, 26, 34, 35, 36
Andere Tipps
Ich weiß nicht ZSH, hier ist, was ich mit Bash und SED gemacht habe:
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\$@@"
Die Ausgabe ist dann:
AD, AE, AF, BD, BE, BF, CD, CE, CF
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow