Как получить уникальные данные (замена для sort | uniq -u)

echo -e "a\na\nb\nc\nd" | awk '{x[$0]++}END{for (z in x){if(x[z]==1){print z}}}'


Команда echo -e "a\na\nb\nc\nd" | awk '{x[$0]++}end{for (z in x){if(x[z]==1){print z}}}' используется для получения уникальных данных из входного потока. Она заменяет комбинацию sort | uniq -u, которая выполняет ту же функцию.

Команда echo -e "a\na\nb\nc\nd" создает входные данные, содержащие строки «a», «a», «b», «c» и «d».
Команда awk '{x[$0]++}end{for (z in x){if(x[z]==1){print z}}}' использует программу awk для обработки данных. Она создает ассоциативный массив x, где каждой строке из входных данных ставится в соответствие ее количество вхождений в массив. В конце обработки всех данных, команда for (z in x){if(x[z]==1){print z}} перебирает все уникальные строки из массива x и выводит только те строки, которые встречаются только один раз.

Альтернативой для этой команды может быть использование комбинации sort и uniq -u, как указано в комментарии. Команда sort сортирует данные в лексикографическом порядке, а команда uniq -u оставляет только уникальные строки.

Передаваемым аргументом в данной команде является входной поток данных, создаваемых командой echo -e "a\na\nb\nc\nd".

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *