кошка file1
foo
ice
two
кошка file2
bar
cream
hundred
Желаемый вывод:
foobar
icecream
twohundred
file1 и file2 всегда будут иметь одинаковое количество строк в моем сценарии, на случай, если все будет проще.
Правильный инструмент для этой работы, вероятно, paste
paste -d '' file1 file2
Смотрите man paste
подробности.
Вы также можете использовать pr
команду:
pr -TmJS"" file1 file2
где
-T
выключает нумерацию страниц-mJ
м Ерг файлы, J oining полных линии-S""
разделить столбцы пустой строкой Если вы действительно хотите сделать это с использованием чистой оболочки bash (не рекомендуется), то я бы предложил следующее:
while IFS= read -u3 -r a && IFS= read -u4 -r b; do
printf '%s%s\n' "$a" "$b"
done 3<file1 4<file2
(Только в том числе и потому, что тема появилась в комментариях к другому предложенному решению с чистым ударом.)
Через awk путь:
getline x<"file2"
читает всю строку из file2 и удерживает переменную xprint $0x
печатает всю строку из файла file1 , используя$0
затем,x
который является сохраненной строкой файла file2 .источник
paste
это путь . Если вы хотите проверить некоторые другие методы, вотpython
решение:Если у вас мало строк:
Обратите внимание, что при неравном количестве строк эта заканчивается на последней строке файла, которая заканчивается первой.
источник
Кроме того, с чистым
bash
(обратите внимание, что это будет полностью игнорировать пустые строки):источник
mapfile
для чтения файлов в массивы, либо используйте цикл while с двумяread
командами, считывая из каждого их fd.array=( $(cmd) )
илиarray=( $var )
. Используйтеmapfile
вместо этого.Perl, легко понять:
Начните с:
Выход:
источник