Когда у меня есть один текстовый файл, который я хочу читать построчно с помощью bash, команда выглядит так:
while IFS='' read -r line || [[ -n "${line}" ]];
do
[code goes here]
done <(${filename})
Теперь у меня есть несколько файлов (с именами от 1.txt до 10.txt), все из которых имеют одинаковое количество строк (~ 1600). Обработка цикла while для каждого файла в отдельности занимает много времени, есть ли способ читать и обрабатывать все параллельно (т. е. все 10 файлов будут читаться одновременно, но обрабатываться отдельно) с синтаксисом while? Например:
While IFS='' read -r line || [[ -n "${line}" ]];
do
[code goes here]
done <(1.txt; 2.txt; 3.txt; ...)
Или может быть лучший способ добиться желаемой обработки нескольких текстов, кроме создания для этого 10 отдельных сценариев?
Общая цель состоит в том, что файлы 1.txt - 10.txt состоят из ~ 1600 отдельных идентификаторов, в которых сначала будет раздел [код идет здесь]:
1) прочитать идентификатор построчно
2) на основе идентификатора будет ссылаться на основной файл, который содержит информацию об идентификаторе, например, когда произошло время для этого конкретного идентификатора. Извлечь на этот раз
3) На основе этой извлеченной информации о времени теперь мы создаем файлы на 1 час раньше и на 1 час позже с шагом в 2 минуты. Затем мы ссылаемся на каждый из этих 60 файлов, открываем их, затем извлекаем строку из этого файла и, наконец, выгружаем ее в новый файл.
Таким образом, процесс состоит из открытия нескольких разных файлов для ссылки.
join
. Вам нужно будет предварительно отсортировать файлы по ключам соединения, но делайте это правильно, и ваши поиски будут очень, очень быстрыми (и, что наиболее важно, вы сможете выполнять их все за один проход, вместо этого перечитывать файлы снова и снова). - person Charles Duffy   schedule 08.08.2019