Более эффективный способ обработки большого количества файлов (300 КБ +) для сбора результатов?

fdisk -l /dev/sda | grep -m1 ^Disk | awk '{print $3 " " $4}'

Я считаю его очень полезным, чем все эти стандартные инструменты или записи протокола

3
19.04.2018, 13:56
2 ответа

Если я правильно понял, у вас fields.txtфайл с большим количеством строк. У вас есть несколько файлов res-0-n-0. И для каждой строки в fields.txtвам нужно скопировать их в results.txtс содержимым файла res-0-<line_number>, если он существует.

Я думаю, что вы можете просто читать файл fields.txtпострочно и отображать строку в файле results.txtс содержимым файла res-0-<line_number>, если это необходимо.

Я бы выбрал что-то вроде этого:

#! /bin/sh

LINE_NUMBER=0
while read line;
do
  if [ -f "res-0-$LINE_NUMBER-0" ]
  then
    echo "$line $(cat res-0-$LINE_NUMBER-0)" >> result.txt
  else
    echo "$line" >> result.txt
  fi
  ((LINE_NUMBER++))
done < fields.txt
2
27.01.2020, 21:21

Попробуйте создать сценарий sed, а затем применить его к файлу только один разfield.txt:

while IFS='' read -r line; do
    res=$(<res-0-"$line"-0)
    real_line=$(( line + 1 ))
    prinft "%s" "${real_line}s/.$/ ${res}/" >> myscript.sed
done < res_numbers_sorted.tmp

, а затем выполните:

sed -i -f myscript.sed field.txt

Таким образом, вы выполняете итерацию по большому файлу только один раз. Позвольте мне знать, если это помогает.

1
27.01.2020, 21:21

Теги

Похожие вопросы