Это можно сделать просто с помощью awk
, сохраняя значения из каждого файла в массиве, а затем просто выводя значения, используя вложенный набор циклов for
, например,
awk '
FNR == NR {a[i++] = $1}
FNR < NR {b[j++] = $1}
END {
for (i in a)
for (j in b)
printf "%s%s\n", a[i], b[j] }
' file1 file2
Команда работает, сравнивая FNR
(номер записи в файле) с NR
(общее количество записей). Если они равны, вы читаете первый файл, сохраняете строки в массиве a
. Если NR > FNR
, вы читаете второй файл, сохраните строки в массиве b
. В пределах END
просто выводите массивы, используя вложенные циклы для желаемого вывода. (вы можете добавить проверку в начале END
, например, if (i != j)
, чтобы проверить равное количество записей из каждой, если это является критерием)
Учитывая, что ваши два файла, показанные как file1
и file2
, приведут к следующему выводу:
AX
AY
AZ
BX
BY
BZ
CX
CY
CZ
(вы можете просто выбрать команду awk
и затем вставить ее средней кнопкой мыши, например, в свой терминал)
$ awk '
> FNR == NR {a[i++] = $1}
> FNR < NR {b[j++] = $1}
> END {
> for (i in a)
> for (j in b)
> printf "%s%s\n", a[i], b[j] }
> ' file1 file2
AX
AY
AZ
BX
BY
BZ
CX
CY
CZ