2013-09-15 1 views
2

Я переборе файл и печать набор значений с использованием AWKпредотвращения дублирования переменной и печати с использованием AWK о

echo $value | awk ' {print $4}' >> 'some location' 

команда отлично работает, но я хочу, чтобы предотвратить повторяющиеся значения хранятся в файле

Заранее спасибо.

+2

Ваше заявление 'Я повторяю файл 'означает, что вы почти наверняка поступаете неправильно. Если вы сообщите нам, что вы пытаетесь сделать с помощью ввода данных и ожидаемого результата, мы можем помочь вам сделать это правильно и в процессе решить вашу текущую конкретную проблему. –

ответ

3

Вместо обработки файла строка за строкой, вы должны использовать одну команду AWK для всего файла

Например:

awk '!a[$4]++{print $4}' file >> 'some location' 

будет держать только уникальные значения в четвертом столбце

0

Использование только одного экземпляра 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 - это правильная вещь.

 Смежные вопросы

  • Нет связанных вопросов^_^