Объедините все столбцы двух файлов, используя bash - PullRequest
0 голосов
/ 02 марта 2020

У меня есть два файла

A B C D E F
B D F A C E
D E F A B C

и

1 2 3 4 5 6
2 4 6 1 3 5
4 5 6 1 2 3

Я хочу иметь что-то вроде этого:

A1 B2 C3 D4 E5 F6
B2 D4 F6 A1 C3 E5
D4 E5 F6 A1 B2 C3

Я имею в виду, объединить оба файла вставки содержимое всех столбцов.

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Не могли бы вы попробовать, попробуйте поиграть с комбинациями xargs + paste здесь.

xargs -n6 < <(paste -d'\0' <(xargs -n1 < Input_file1) <(xargs -n1 < Input_file2))
1 голос
/ 02 марта 2020

Вот решение bash:

paste -d' ' file1 file2 \
| while read -a fields ; do
      (( width=${#fields[@]}/2 ))
      for ((i=0; i<width; ++i)) ; do
          printf '%s%s ' "${fields[i]}" "${fields[ i + width ]}"
      done
      printf '\n'
done
  • paste выводит файлы рядом.
  • read -a считывает столбцы в массив.
  • в for l oop мы перебираем массив и выводим соответствующие значения.
...