Использование только одного экземпляра awk
, как предложено пользователем000001, безусловно, правильно, и поскольку в вопросе задается очень мало деталей, это чистое предположение, но самым простым решением может быть тривиальная рефа ctor вашей петли. Например, если текущий код:
while ...; do
...
echo $value | awk ...
...
done
Вы можете просто изменить его на:
while ...; do
...
echo $value >&5
...
done 5>&1 | awk '!a[$4]++{print $4}' >> /p/a/t/h
Обратите внимание, что, хотя это «просто» исправить с точки зрения кода, чтобы изменить, почти конечно, не правильное исправление! Удаление полного цикла while и просто использование awk - это правильная вещь.
Ваше заявление 'Я повторяю файл 'означает, что вы почти наверняка поступаете неправильно. Если вы сообщите нам, что вы пытаетесь сделать с помощью ввода данных и ожидаемого результата, мы можем помочь вам сделать это правильно и в процессе решить вашу текущую конкретную проблему. –