awk는 여러 파일의 행을 순차적으로 하나의 파일로 병합합니다.

awk는 여러 파일의 행을 순차적으로 하나의 파일로 병합합니다.

파일이 너무 많아서 그 파일의 문자열을 3개 그룹으로 병합해야 합니다. 각 파일에는 약 100-500줄이 있으며 결과 파일은 약 100-200Mb입니다.

ppc 키워드 생성기는 동일한 작업을 수행하지만 매우 느립니다. 100만 개의 키워드 이후에는 1개의 결과 파일이 2-3시간이 걸립니다.

f1

Acapella Audio Arts
Acoustic Smart

f2

australian
Australia
America

f3

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

이 버전은 파일 I/O가 적으므로(각 파일은 한 번만 읽음) 속도가 더 빠를 수 있습니다.

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

관련 정보