У меня есть файл, содержащий около миллиона строк. В строках у меня есть поле с именем transactionid
, которое имеет повторяющиеся значения. Что мне нужно сделать, так это считать их отчетливо.
Независимо от того, сколько раз значение повторяется, оно должно учитываться только один раз.
text-processing
awk
Олгун Кая
источник
источник
... No matter of how many times a value is repeated, it should be counted as 1. ...
cat <file_name> | awk -F"|" '{if ((substr($2,0,8)=='20120110')) print $28}' | sort -u | wc -l
условие if было для другой проверки даты, поскольку это кажется очевидным :)Ответы:
ОК, при условии, что ваш файл представляет собой текстовый файл с полями, разделенными запятыми «,». Вы бы также знали, какое поле
'transactionid'
с точки зрения его позиции. Предполагая, что ваше'transactionid'
поле 7-е поле.Это будет считать уникальные / уникальные вхождения в 7-м поле и печатать результат.
источник
sort
передuniq
командой.uniq
устранения записей, они должны быть рядом друг с другом.Может быть, не самый гладкий метод, но это должно работать:
где
$1
число, соответствующее полю, которое будет проанализировано.источник
Нет необходимости сортировать файл .. (
uniq
требуется, чтобы файл был отсортирован).Этот сценарий awk предполагает, что поле является первым полем с пробелами.
источник
sort
реализаций предназначены для того, чтобы хорошо справляться с огромными файлами.