- Man uniq linux команда
- ksh93
- OPTIONS
- /usr/bin/uniq
- ksh93
- OPERANDS
- EXAMPLES
- ENVIRONMENT VARIABLES
- EXIT STATUS
- ATTRIBUTES
- /usr/bin/uniq
- ksh93
- uniq(1) — Linux man page
- Synopsis
- Description
- Author
- Reporting Bugs
- Copyright
- See Also
- Использование команды uniq в Linux (10 примеров)
- Утилита uniq в Linux
- 1. Удаление повторяющихся строк из вывода
- 2. Вывод информации о количестве дубликатов каждой из строк
- 3. Вывод лишь повторяющихся строк
- 4. Пропуск начальных фрагментов строк
- 5. Вывод всех строк с разделением групп повторяющихся строк
- 6. Вывод лишь не повторяющихся строк
- 7. Пропуск заданного количества символов в начале строк
- 8. Указание количества символов для сравнения
- 9. Сравнение строк без учета регистра
- 10. Использование завершающего нулевого символа вместо символа перехода на новую строку
- Заключение
Man uniq linux команда
The uniq utility reads an input file comparing adjacent lines and writes one copy of each input line on the output. The second and succeeding copies of repeated adjacent input lines are not written.
Repeated lines in the input are not detected if they are not adjacent.
ksh93
The uniq built-in in ksh93 is associated with the /bin or /usr/bin path . It is invoked when uniq is executed without a pathname prefix and the pathname search finds a /bin/uniq or /usr/bin/uniq executable.
uniq reads an input, comparing adjacent lines, and writing one copy of each input line on the output. The second and succeeding copies of the repeated adjacent lines are not written.
If output_file is not specified, uniq writes to standard output. If input_file is not specified, or if input_file is — , uniq reads from standard input, and the start of the file is defined as the current offset.
OPTIONS
/usr/bin/uniq
The following options are supported by /usr/bin/uniq :
-c Precedes each output line with a count of the number of times the line occurred in the input.
-d Suppresses the writing of lines that are not repeated in the input.
-f fields Ignores the first fields fields on each input line when doing comparisons, where fields is a positive decimal integer. A field is the maximal string matched by the basic regular expression:
If fields specifies more fields than appear on an input line, a null string is used for comparison.
+ m Equivalent to -s chars with chars set to m .
— n Equivalent to -f fields with fields set to n .
-s chars Ignores the first chars characters when doing comparisons, where chars is a positive decimal integer. If specified in conjunction with the -f option, the first chars characters after the first fields fields is ignored. If chars specifies more characters than remain on an input line, a null string is used for comparison.
-u Suppresses the writing of lines that are repeated in the input.
ksh93
The following options are supported by the uniq built-in command is ksh93 :
-c
—count Outputs the number of times each line occurred along with the line.
-d
—repeated | duplicates Outputs only duplicate lines.
-D
—all-repeated [ = delimit ] Outputs all duplicate lines as a group with an empty line delimiter specified by delimit .
Specify delimit as one of the following:
none Do not delimit duplicate groups.
prepend Prepend an empty line before each group.
separate Separate each group with an empty line.
The value for delimit can be omitted. The default value is none .
-f
—skip-fields= fields Skips over fields number of fields before checking for uniqueness. A field is the minimal string matching the BRE [[: blank :]]*[^[: blank :]]* .
-i
—ignore-case Ignore case in comparisons.
+ m Equivalent to the -s chars option, with chars set to m .
— n Equivalent to the -f fields option, with fields set to n .
-s
—skip-chars= chars Skips over chars number of characters before checking for uniqueness.
If specified with the -f option, the first chars after the first fields are ignored. If the chars specifies more characters than are on the line, an empty string is used for comparison.
-u
—uniq Outputs unique lines.
-w
—check-chars= chars Skips over any specified fields and characters, then compares chars number of characters.
OPERANDS
The following operands are supported:
input_file A path name of the input file. If input_file is not specified, or if the input_file is — , the standard input is used.
output_file A path name of the output file. If output_file is not specified, the standard output is used. The results are unspecified if the file named by output_file is the file named by input_file .
EXAMPLES
Example 1 Using the uniq Command
The following example lists the contents of the uniq.test file and outputs a copy of the repeated lines.
The next example outputs just those lines that are not repeated in the uniq.test file.
The last example outputs a report with each line preceded by a count of the number of times each line occurred in the file:
ENVIRONMENT VARIABLES
See environ (5) for descriptions of the following environment variables that affect the execution of uniq : LANG , LC_ALL , LC_CTYPE , LC_MESSAGES , and NLSPATH .
EXIT STATUS
The following exit values are returned:
0 Successful completion.
>0 An error occurred.
ATTRIBUTES
See attributes (5) for descriptions of the following attributes:
/usr/bin/uniq
|
ksh93
|
The ksh93 built-in binding to /bin and /usr/bin is Volatile. The built-in interfaces are Uncommitted.
Источник
uniq(1) — Linux man page
Synopsis
Description
Filter adjacent matching lines from INPUT (or standard input), writing to OUTPUT (or standard output).
With no options, matching lines are merged to the first occurrence.
Mandatory arguments to long options are mandatory for short options too. -c, —count prefix lines by the number of occurrences -d, —repeated only print duplicate lines -D, —all-repeated[=delimit-method] print all duplicate lines delimit-method=
A field is a run of blanks (usually spaces and/or TABs), then non-blank characters. Fields are skipped before chars.
Note: ‘uniq’ does not detect repeated lines unless they are adjacent. You may want to sort the input first, or use ‘sort -u‘ without ‘uniq’. Also, comparisons honor the rules specified by ‘LC_COLLATE’.
Author
Reporting Bugs
Copyright
See Also
The full documentation for uniq is maintained as a Texinfo manual. If the info and uniq programs are properly installed at your site, the command info coreutils aquniq invocationaq
should give you access to the complete manual.
Источник
Использование команды uniq в Linux (10 примеров)
Оригинал: Linux Uniq Command Tutorial for Beginners (10 examples)
Автор: Himanshu Arora
Дата публикации: 23 мая 2017 г.
Перевод: А.Панин
Дата перевода: 24 мая 2017 г.
Если вы являетесь пользователем интерфейса командной строки Linux и ваша работа связана с редактированием текстовых файлов, вы должны знать (если уже не знаете) о существовании огромного количества утилит с интерфейсом командной строки, которые могут помочь вам в различных ситуациях. Например, одной из таких утилит является утилита uniq , выводящая или удаляющая из вывода повторяющиеся строки, находящиеся в текстовом файле.
В данной статье мы будем обсуждать методику использования утилиты uniq на основе простых для понимания примеров. Но перед тем, как приступить к рассмотрению примеров стоит упомянуть о том, что все примеры и инструкции из данной статьи были протестированы в системе Ubuntu 16.04 LTS.
Утилита uniq в Linux
Как уже говорилось ранее, утилита uniq осуществляет вывод или удаление из вывода повторяющихся строк. А это синтаксис соответствующей команды:
А это описание функций утилиты с ее страницы руководства: «Утилита осуществляет фильтрацию идентичных строк из ВХОДНОГО ФАЙЛА (или из стандартного потока ввода) и выводит информацию в ВЫХОДНОЙ ФАЙЛ (или стандартный поток вывода). При вызове без параметров идентичные строки объединяются в рамках первых найденных экземпляров строк.»
Ниже приведен ряд примеров, которые помогут вам лучше понять принцип работы рассматриваемой утилиты.
1. Удаление повторяющихся строк из вывода
Предположим, что в нашем распоряжении имеется файл со следующими строками:
Несложно заметить, что каждая из строк повторяется. Теперь применим утилиту uniq по отношению к этому файлу и посмотрим, к чему это приведет.
Очевидно, что вывод не содержит дубликатов строк. Обратите внимание на то, что содержимое оригинального файла с именем file1 в нашем случае осталось неизменным. Вы можете перенаправить вывод утилиты в другой файл в том случае, если вам нужно сохранить вывод для дальнейшей обработки.
2. Вывод информации о количестве дубликатов каждой из строк
Если вам нужно, вы можете использовать утилиту uniq для вывода информации о количестве повторений каждой из строк файла. Это может быть сделано с помощью параметра командной строки -c . Например, команда
будет генерировать следующий вывод:
Несложно заметить, что перед каждой из строк выводится число, соответствующее количеству ее повторений.
3. Вывод лишь повторяющихся строк
Для того, чтобы утилита uniq выводила лишь повторяющиеся строки, следует использовать параметр -D командной строки. Например, предположим, что файл с именем файл file1 теперь содержит дополнительную строку в конце (обратите внимание на то, что эта строка не повторяется).
Теперь при исполнении команды
будет генерироваться следующий вывод:
Как вы видите, параметр -D сообщает утилите uniq о необходимости вывода всех повторяющихся строк, включая их повторы. Для лучшей читаемости вы можете активировать режим вывода пустой строки после каждой из групп повторяющихся строк с помощью параметра —all-repeated .
Данный параметр требует от пользователя обязательного указания метода добавления разделителя. Строки могут добавляться к разделителю (то есть, пустой строке) с помощью метода prepend или разделяться с помощью него с помощью метода append . Например, в данном случае используется метод prepend .
Более того, если вам нужно, чтобы утилита выводила лишь по одному экземпляру каждой из повторяющихся строк, вы можете воспользоваться параметром -d . Это пример его использования:
Очевидно, что в выводе приводится лишь по одному экземпляру строки из каждой группы.
4. Пропуск начальных фрагментов строк
Иногда, в зависимости от ситуации, совпадение двух строк может быть установлено по совпадению определенных частей этих строк. Например, рассмотрим следующий файл:
Теперь предположим, что строки должны считаться совпадающими или не совпадающими на основании совпадения или несовпадения их вторых полей (то есть HTF или FF) и вам нужно сделать так, чтобы утилита uniq использовала такой же критерий сравнения, чего несложно добиться с помощью параметра командной строки -f .
Параметр -f требует от вас обязательной передачи числа, которое соответствует количеству полей, которые нужно пропустить. Например, в нашем случае мы передаем в качестве значения параметр -f значение 1, так как мы хотим, чтобы утилита uniq пропустила лишь первое поле:
Из вывода очевидно, что утилита uniq посчитала первую и третью строку повторяющимися исключительно на основе их вторых полей.
5. Вывод всех строк с разделением групп повторяющихся строк
При необходимости вывода всех строк с разделением групп повторяющихся строк с помощью пустой строки вы можете использовать параметр —group . Как и в случае описанного выше параметра —all-repeated , параметр —groups требует от пользователя обязательного указания позиции пустой строки ( prepend , append или both ).
Это пример использования рассматриваемого параметра:
Обратите внимание на параметр -f , который обсуждался в предыдущем разделе.
6. Вывод лишь не повторяющихся строк
Вы уже наверняка поняли, что утилита uniq по умолчанию выводит лишь повторяющиеся строки. Но если вам нужно, вы можете сообщить ей о необходимости вывода лишь не повторяющихся или уникальных строк. Это делается с помощью параметра командной строки -u .
В нашем случае команда будет выглядеть следующим образом:
Это пример ее использования:
Обратите внимание на параметр -f , который обсуждался в разделе 4.
7. Пропуск заданного количества символов в начале строк
В одном из предыдущих разделов мы обсуждали методику пропуска полей строк при использовании утилиты uniq. Однако, при необходимости вы можете сообщить утилите о необходимости пропуска не начальных полей, а начальных символов строк. Для доступа к соответствующей функции может использоваться параметр командной строки -s .
Например, предположим, что наш файл содержит следующие строки:
Теперь, если вы захотите, чтобы uniq пропустила первые 4 символа каждой строки перед их сравнением, вы сможете воспользоваться следующей командой:
А это приведенная выше команда в действии:
Несложно заметить, что четвертая строка (faq_forge) из оригинального файла была пропущена. Это объясняется тем, что после пропуска первых четырех символов третья и четвертая строки становятся идентичными для утилиты uniq и она выводит лишь первую из них.
8. Указание количества символов для сравнения
По аналогии с пропуском символов, вы можете сообщить утилите uniq о необходимости сравнения лишь заданного количества символов строк. Для этой цели вам придется использовать параметр командной строки -w .
Например, предположим, что файл содержит следующие строки:
Теперь при необходимости ограничения диапазона символов строк для сравнения тремя первыми символами, может использоваться следующая команда:
Это приведенная выше команда в действии:
Так как первые три символа третьей и четвертой строк совпадают, эти строки считаются утилитой идентичными. По этой причине в выводе находится лишь третья строка.
9. Сравнение строк без учета регистра
По умолчанию утилита uniq осуществляет сравнение строк с учетом регистра символов. Однако, вы можете активировать режим сравнения строк без учета регистра символов с помощью параметра командной строки -i .
Например, предположим, что мы будем использовать файл с содержимым, аналогичным рассмотренному в предыдущем разделе, но теперь четвертая строка будет начинаться с символов H, O и W в верхнем регистре.
Теперь, если вы попытаетесь выполнить рассмотренную в предыдущем разделе команду, вы получите отличный вывод:
Это объясняется тем, что первые три символа третьей и четвертой строк отличны для утилиты uniq ввиду их регистра. В подобных ситуациях вы можете активировать режим сравнения строк без учета регистра с помощью параметра командной строки -i .
10. Использование завершающего нулевого символа вместо символа перехода на новую строку
По умолчанию утилита uniq генерирует вывод с завершающим символом перехода на новую строку. Однако, при необходимости вы можете активировать режим использования завершающего нулевого символа (полезный при вызове uniq из сценариев). Для этого следует использовать параметр командной строки -z :
Заключение
Мы рассмотрели практически все поддерживаемые утилитой uniq параметры командной строки, поэтому вам остается лишь самостоятельно испытать их в работе для того, чтобы лучше понять их принцип работы и функции. И как обычно, в случае каких-либо сомнений и вопросов следует обращаться к странице руководства утилиты .
Источник