Решено: uniq, sort? (Повторяющиеся строки)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

aka
Сообщения: 171

Решено: uniq, sort?

Сообщение aka »

Чем еще можно вычислить повторяющиеся строки кроме uniq и sort??
Проблема в том что есть файл в отором есть строки одинаковые полностью кроме последних нескольких символов.Как можно выкинуть первую "повторяющуюся" строку??
Мой блог -- unixway.info --
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Решено: uniq, sort?

Сообщение allez »

Начнем с того, что "строки одинаковые полностью кроме последних нескольких символов" таки не являются одинаковыми. ;)
А чтобы решить вашу задачу, можно, например, учитывать при сортировке не всю строку, а только определенное количество символов в ее начале.
Спасибо сказали:
aka
Сообщения: 171

Re: Решено: uniq, sort?

Сообщение aka »

allez писал(а):
19.06.2009 10:51
Начнем с того, что "строки одинаковые полностью кроме последних нескольких символов" таки не являются одинаковыми. ;)
А чтобы решить вашу задачу, можно, например, учитывать при сортировке не всю строку, а только определенное количество символов в ее начале.


Cогласен, таки не являются))) В том то и дело что uniq например дает только пропустить какое то кол-во символов в начале строки, а мне нужно с конца пропустить что ли...Вообщем вы то правильно сказали, но я не увидел как с помощью этих двух програм сделать такое...

Вроде нашел.

Код: Выделить всё

uniq -w25 file.txt

Это мне выводит именно те строки, что нужно удалить, но именно удалить, а не оставить:(
Мой блог -- unixway.info --
Спасибо сказали:
Аватара пользователя
zov
Сообщения: 255

Re: Решено: uniq, sort?

Сообщение zov »

% echo -e "XXX 1\nXXX 2\nXXX 3"
XXX 1
XXX 2
XXX 3
% echo -e "XXX 1\nXXX 2\nXXX 3" | rev | sort | uniq --skip-fields=1 | rev
XXX 1

?
Спасибо сказали:
aka
Сообщения: 171

Re: Решено: uniq, sort?

Сообщение aka »

zov, или я чего то недопонял в вашем варианте, или...но я заранее не знаю какими будут ХХХ 1\n XXX 2\n...
Мой блог -- unixway.info --
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Решено: uniq, sort?

Сообщение allez »

Тогда хотя бы приведите пример того, с чем вам уже довелось столкнуться.
Спасибо сказали:
aka
Сообщения: 171

Re: Решено: uniq, sort?

Сообщение aka »

С тем, что я могу командой

Код: Выделить всё

uniq -w25 file.txt
, оставить повторяющиеся строки, а не убрать их...Нужно просто выкинуть их из файла.
Мой блог -- unixway.info --
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: Решено: uniq, sort?

Сообщение pelmen »

cat file.txt | grep -v `uniq -w25 file.txt (или какая там у тебя команда, которая выводит лишние строки) ` > newfile.txt
может подойдет ? :)
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Решено: uniq, sort?

Сообщение allez »

aka
Читайте man uniq на предмет опции -u.
Спасибо сказали:
aka
Сообщения: 171

Re: Решено: uniq, sort?

Сообщение aka »

pelmen писал(а):
22.06.2009 16:12
cat file.txt | grep -v `uniq -w25 file.txt (или какая там у тебя команда, которая выводит лишние строки) ` > newfile.txt
может подойдет ? :)

Именно эта команда выводит, но с вашим вариантом не прошло:((


allez писал(а):
22.06.2009 16:31
aka
Читайте man uniq на предмет опции -u.


Конечно же читал!

Код: Выделить всё

uniq -u -w25 file.txt

Ничего вообще не выводит.
Мой блог -- unixway.info --
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: Решено: uniq, sort?

Сообщение pelmen »

aka писал(а):
22.06.2009 17:19
pelmen писал(а):
22.06.2009 16:12
cat file.txt | grep -v `uniq -w25 file.txt (или какая там у тебя команда, которая выводит лишние строки) ` > newfile.txt
может подойдет ? :)
Именно эта команда выводит, но с вашим вариантом не прошло:((
а так?
cat tmp.txt | grep -v "`uniq -w4 tmp.txt`" > newtmp.txt
cat tmp.txt | grep -v "`cat tmp.txt | uniq -w25`" > newtmp.txt
у меня сработало
с этими командами работаю впервые, просто немного логического мышления :)
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Решено: uniq, sort?

Сообщение allez »

aka писал(а):
22.06.2009 17:19

Код: Выделить всё

uniq -u -w25 file.txt

Ничего вообще не выводит.
Тогда остается предположить, что в файле нет уникальных строк.

Вот пример, сработавший у меня. Надеюсь, комментарии не потребуются.

...

$ cat file abcdefg 21.05.09 prefix 09:42:24 гггг suffix abcdefg 21.05.09 prefix 15:05:04 suffix ааа abcdefg 22.05.09 prefix 05:04:59 suffix ббб cdefgab 21.05.09 prefix 15:05:04 ааа suffix qwertyu 21.05.09 prefix 09:42:24 гггг suffix qwertyu 21.05.09 prefix 09:42:24 гггг suffix $ uniq -w7 -u file cdefgab 21.05.09 prefix 15:05:04 ааа suffix
Спасибо сказали:
aka
Сообщения: 171

Re: Решено: uniq, sort?

Сообщение aka »

Да я все понимаю.Задача, то на первый взгляд простая, но с помощью uniq не решается.Может есть аналог?Sort,уже пробовал...
Мой блог -- unixway.info --
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Решено: uniq, sort?

Сообщение allez »

aka писал(а):
22.06.2009 18:25
Задача, то на первый взгляд простая, но с помощью uniq не решается.
Посмотрите внимательнее в мое предыдущее сообщение. Задача таки решается. Может, все-таки приведете здесь отрывок файла, который вы обрабатываете, а? Второй раз уже прошу...
Спасибо сказали:
Аватара пользователя
McLeod095
Сообщения: 477
ОС: Люблю слаку

Re: Решено: uniq, sort?

Сообщение McLeod095 »

aka писал(а):
22.06.2009 18:25
Да я все понимаю.Задача, то на первый взгляд простая, но с помощью uniq не решается.Может есть аналог?Sort,уже пробовал...


Может это поможет
The input need not be sorted, but repeated input lines are detected
only if they are adjacent. If you want to discard non-adjacent
duplicate lines, perhaps you want to use `sort -u'

Взято из info uniq

В принципе тут все понятно
Перед тем как передать команде uniq список он должен быть отсортирован

Попробую предположить что
cat file.txt | sort -k 1,25 | uniq -u -w25
поможет

хотя хотелось бы увидеть кусок файла с исходными данными
"Work PC" E6750/2GB/Asus P5B Deluxe/2x250GB/6600GT 128/Slackware Current (Win 2003 in VmWare)
New Work: E6400/3GB/Arch
Home Book: Asus W6k00A/Arch, Asus 701/Arch
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Решено: uniq, sort?

Сообщение Ленивая Бестолочь »

Уважаемый aka, выложите наконец файл с примером данных, которые вам нужно сортировать.
А то какая-то неконструктивная тема получается - люди вам предлагают различные варианты, а вас не устраивает.

в противном случае тема подлежит закрытию, т.к. превращается в аттракцион по угадыванию мыслей.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: Решено: uniq, sort?

Сообщение pelmen »

cat tmp.txt | grep -v "`uniq -w25 tmp.txt`" > newtmp.txt
это 100% рабочий код как раз для Ваших целей, что не так?
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Решено: uniq, sort?

Сообщение drBatty »

aka писал(а):
19.06.2009 10:35
Проблема в том что есть файл в отором есть строки одинаковые полностью кроме последних нескольких символов.Как можно выкинуть первую "повторяющуюся" строку??

sed
вам надо выкинуть последние 3 символа?

Код: Выделить всё

sed 's/...$//'

или чего вы хотите?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Решено: uniq, sort?

Сообщение allez »

drBatty
Автор воюет с повторяющимися строками.
aka писал(а):
22.06.2009 14:53
Нужно просто выкинуть их из файла.

При этом заявляет, что ни один из предложенных вариантов не срабатывает и упорно не желает поделиться фрагментом обрабатываемого файла...
Спасибо сказали:
aka
Сообщения: 171

Re: Решено: uniq, sort?

Сообщение aka »

Спасибо всем людям,которые помогали:)Мне подошел вот этот вариант:

Код: Выделить всё

cat tmp.txt | grep -v "`uniq -w25 tmp.txt`" > newtmp.txt

:drinks:
Мой блог -- unixway.info --
Спасибо сказали: