Невозможно объединить слова в файлах Zsh/AWK.

StackOverflow https://stackoverflow.com/questions/803805

  •  03-07-2019
  •  | 
  •  

Вопрос

У меня есть Файл1

A,B,C

и Файл2

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

Если Файл1 содержит

A,B,C
1,2,3

и Файл2 содержит

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, вот что я сделал с bash и 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top