Я пишу скрипт оболочки bash, для очистки писем. Мне нужна помощь, чтобы выяснить, как заменить выходной файл, созданный в первом раунде, в команду в цикле FOR?

Во-первых, я решил разделить файл на маленькие файлы с 10 000 электронных писем, каждое из которых обрабатывалось как файл слишком большого размера, и когда я запускаю grep, я получаю ошибку «Память исчерпана». Поэтому я решил разделить и продолжить.

split -d -l 10000 EMAILS.txt Segment

Вот скрипт bash:

for i in Segment*
do
pv "Suppresion-List.txt" | grep -vf <(sed 's/^/^/; s/$/$/' "$i") >> RESULT-1.txt
done

Первым раундом должен быть сам Suppresion-List.txt. Только со второго раунда он должен быть заменен выходом первого раунда. Подобно тому, как мы автоматически подставили $ i, нам нужно заменить Output (Result-1.txt) первого раунда, чтобы заменить Suppresion-List.txt. И так должно продолжаться ...

Например:

Раунд 1: pv "Suppresion-List.txt" | grep -vf <(sed 's/^/^/; s/$/$/' "$i") > RESULT-1.txt

Раунд 2: pv "RESULT-1.txt" | grep -vf <(sed 's/^/^/; s/$/$/' "$i") > RESULT-2.txt

Раунд 3: pv "RESULT-2.txt" | grep -vf <(sed 's/^/^/; s/$/$/' "$i") > RESULT-3.txt

Итак, нам нужно автоматически создать выходной файл с инкрементным номером, а затем этот файл, созданный в результате предыдущего раунда, должен быть заменен после команды pv вместо «Suppresion-List.txt». Как мы это делаем?

0