Это прекрасно работает как отправлено для любого размера файла. Вот полный, автономный скрипт, который демки его для миллиона строк файлов:
#!/bin/bash
printf "foo%s\n" {1..1000000} > XX1.txt
printf "bar%s\n" {1..1000000} > XX2.txt
fname3=XX1.txt fname2=XX2.txt
while read -r -u3 line1; read -r -u4 line2; do
echo "$line1:$line2";
done 3< "$fname3" 4< "$fname2"
Выход:
foo1:bar1
foo2:bar2
...
foo999999:bar999999
foo1000000:bar1000000
Если первый файл короче, чем второй, последние оставшиеся линии будут :line
, пока второй файл не будет полностью прочитан. Если второй файл короче, скрипт остановится, когда это будет сделано, и проигнорируйте остальную часть первого файла.
Чтобы прекратить работу с любыми файлами, используйте &&
вместо ;
, чтобы отделить прочитанные операторы. Чтобы прочитать до тех пор, пока оба файла не вышли из строя, используйте ||
.
Работы для меня ... –
я продублировал Баш скрипт в другой файл. Первый файл работает, но второй файл не работает, происходит ли копирование скрипта? Файлы действительно большие ... – wagashi
Вы ищете 'paste -d: XX1.txt XX2.txt'? – tripleee