Необходимо напечатать определенные строки большого файла txt.gz, используя индексный файл
Привет всем,
Я нашел несколько примеров для печати определенных строк несжатых файлов, ноне удалось найти решение для очень большого файла gz.
Мой индексный файл (idx.txt) выглядит следующим образом и содержит 700 000 индексов:
1745
1746
7379
13920
13921
16681
16682
...
...
...
54830241
54867703
54867710
Я хочу получить всеэти 700 000 строк в моем другом исходном файле, который представляет собой очень большой сжатый CSV-файл с 55 000 000 строк и выглядит следующим образом:
100035243,2,"Chronic obstructive pulmonary disease","SS","LETAIRIS","AMBRISENTAN","","Dyspnoea",NA,73,"F","","","CN"
100035672,1,"Myeloproliferative disorder","PS","JAKAFI","RUXOLITINIB","ORAL","Platelet count increased",20131206,48.501,"F","79.37","KG","OT"
100035914,1,"Multiple sclerosis","PS","GILENYA","FINGOLIMOD HYDROCHLORIDE","ORAL","Lymphocyte count decreased",20130718,47.154,"F","","","OT"
....
Что я пробовал до сих пор:
sed -nf idx.txt <(gzip -dc gzfile.gz) > output.txt
awk 'NR==FNR{i[$0];next}i[FNR]' idx.txt <(gzip -dc gzfile.gz) > output.txt
Обаочень медленные.
Есть мысли?