Я пишу скрипт оболочки 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». Как мы это делаем?