cygwin uniq не работает

Учитывая следующий отсортированный файл (myfile.txt):

http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
http://quarterly.mayo.edu/photolisting/default.cfm?summary=&displaymode=&reporting_unit_code=

Когда я пытаюсь:

uniq -c myfile.txt

Я получил:

21 http://quarterly.mayo.edu/photoListing/default.cfm?summary=&displaymode=&reporting_unit_code=
   1 http://quarterly.mayo.edu/photolisting/default.cfm?summary=&displaymode=&reporting_unit_code=

Что, я думаю, может указывать на скрытый персонаж или что-то в этом роде, но когда я пытаюсь:

uniq -u myfile.txt

Я получаю ожидаемое:

http://quarterly.mayo.edu/photolisting/default.cfm?summary=&displaymode=&reporting_unit_code=

Это добросовестное несоответствие или я что-то упускаю? Спасибо, Ал


person Tiggyboo    schedule 26.01.2015    source источник


Ответы (1)


uniq -u печатает только уникальные строки. Ваш myfile.txt, по-видимому, имеет 21 идентичную строку, за которой следует одна уникальная строка. uniq -u печатает только эту уникальную строку.

uniq myfile.txt должен напечатать две строки, первая из которых соответствует 21 идентичной строке, а вторая - последней несовпадающей строке.

Например:

$ ( echo foo ; echo foo ; echo bar ) | uniq -c
      2 foo
      1 bar
$ ( echo foo ; echo foo ; echo bar ) | uniq -u
bar
$

Что касается того, почему uniq -c производит 2 строки вывода, а не 1, это потому, что ваша последняя строка отличается от предыдущей 21 строки. У вас есть photoListing (верхний регистр L) в строках 1..21 и photolisting (нижний регистр l) в строке 22.

(Моя первая мысль заключалась в том, что у вас, вероятно, есть какие-то скрытые символы в файле; поскольку вы используете Cygwin, наиболее вероятной причиной являются несовместимые окончания строк. Чтобы увидеть скрытые символы:

uniq -c myfile.txt | cat -A

Но оказывается, проблема не в этом.)

person Keith Thompson    schedule 26.01.2015
comment
Спасибо, то, что вы сказали, имеет смысл. Однако использование в vi списка cat -A и: set указывает только символ конца строки ($) в конце каждой строки, то есть в этой строке нет ничего явно уникального. - person Tiggyboo; 26.01.2015
comment
@Tiggyboo: А, но есть! Смотрите мой обновленный ответ. Слегка ударить себя по лбу совершенно необязательно, но я бы точно так и поступил. - person Keith Thompson; 26.01.2015