У меня много файлов и мне нужно объединить строки между ними группами по три файла. Каждый файл содержит ~100-500 строк, а итоговый файл весит ~100-200 Мб.
Генератор ключевых слов ppc делает то же самое, но он очень медленный: после 1 миллиона ключевых слов на создание одного файла результатов уходит 2–3 часа.
ф1
Acapella Audio Arts
Acoustic Smart
ф2
australian
Australia
America
ф3
Round Grille
Square Grille
grille
defence grille
результат
Acapella Audio Arts australian Round Grille
Acapella Audio Arts australian Square Grille
Acapella Audio Arts australian grille
Acapella Audio Arts australian defence grille
Acapella Audio Arts Australia Round Grille
Acapella Audio Arts Australia Square Grille
Acapella Audio Arts Australia grille
Acapella Audio Arts Australia defence grille
Acapella Audio Arts America Round Grille
Acapella Audio Arts America Square Grille
Acapella Audio Arts America grille
Acapella Audio Arts America defence grille
Acoustic Smart australian Round Grille
Acoustic Smart australian Square Grille
Acoustic Smart australianе grille
Acoustic Smart australian defence grille
Acoustic Smart Australia Round Grille
Acoustic Smart Australia Square Grille
Acoustic Smart Australia grille
Acoustic Smart Australia defence grille
Acoustic Smart America Round Grille
Acoustic Smart America Square Grille
Acoustic Smart America grille
Acoustic Smart America defence grille
etc.....
решение1
Просто с bash:
while IFS= read -u3 -r product; do
while IFS= read -u4 -r region; do
while IFS= read -u5 -r option; do
echo "$product $region $option"
done 5<f3
done 4<f2
done 3<f1
В этой версии будет меньше операций ввода-вывода файлов (каждый файл будет считываться только один раз), поэтому она может работать быстрее.
mapfile -t products < f1
mapfile -t regions < f2
mapfile -t options < f3
for product in "${products[@]}"; do
for region in "${regions[@]}"; do
for option in "${options[@]}"; do
echo "$product $region $option"
done
done
done