غير قادر على الجمع بين الكلمات في الملفات من قبل Zsh/AWK
سؤال
لدي File1
A,B,C
و File2
D,E,F
أنا أحاول أن يكون
AD, AE, AF, BD, BE, BF, CD, CE, CF
من قبل دون جدوى
echo {`cat File1`}{`cat File2`}
إعطاء
{A,B,C}{D,E,F}
كيف يمكنك حل المشكلة عن طريق Zsh/AWK?
المحلول
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
إذا File1 يحتوي على
A,B,C
1,2,3
و File2 يحتوي على
D,E,F
4,5,6
ثم awk النصي النواتج
AD, AE, AF, BD, BE, BF, CD, CE, CF
14, 15, 16, 24, 25, 26, 34, 35, 36
نصائح أخرى
أنا لا أعرف zsh, هنا هو ما فعلته مع باش و 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\$@@"
الإخراج ثم هو:
AD, AE, AF, BD, BE, BF, CD, CE, CF
لا تنتمي إلى StackOverflow