wykluczenie powtarzających się ... ?linii?

Problemy dotyczące programowania.

Moderatorzy: Moderatorzy, Administratorzy

pejter
Użytkownik
Posty: 274
Rejestracja: 2005-09-21, 23:47

wykluczenie powtarzających się ... ?linii?

Post autor: pejter »

Hi,

Mam kłopot, w postaci 2 plików z listą 5000 i 10.000 linii, wypełnionych bełkotem typu

Kod: Zaznacz cały

RB8381SL/27
RB8381SL/34
RB8381SL/43
RB8381SP/27
RB8381SP/34
RB8381SP/89
RB8381SP/102
RB8381SP/115
i tak w nieskończoność, część pozycji występuje w obu plikach, a ja potrzebuję tych które się nie powtarzają, myślałem ze to się da zrobić sedem, znalazłem taki przykład miał on usunać powtarzające się linie, połaczyłem oba pliki w jeden i puściłem

Kod: Zaznacz cały

sed '$!N; /^\(.*\)\n\1$/!P; D' abab > abab2
ale to zostawia jedną powtarzającą się linię, a resztę usuwa, ale też chyba usuwa tylko te co są bezpośrednio pod sobą.
Potrzebuję listę niepowtarzających się pozycji, takich które występują tylko raz, Jak je "wyciągnąć"?

Pozdr.
Ostatnio zmieniony 2011-04-23, 19:53 przez pejter, łącznie zmieniany 2 razy.
joi
Użytkownik
Posty: 151
Rejestracja: 2004-10-12, 20:32
Lokalizacja: raczej nie stąd ;)
Kontakt:

Re: wykluczenie powtarzających się ... ?linii?

Post autor: joi »

Kod: Zaznacz cały

cat p1 p2 | sort | uniq -u
pejter
Użytkownik
Posty: 274
Rejestracja: 2005-09-21, 23:47

Re: wykluczenie powtarzających się ... ?linii?

Post autor: pejter »

Dzięki ... ale coś jest nie tak, zrobiłem testowe pliki z częściowo powtarzającą się zawartością z nich faktycznie odfiltrowywuje te unikalne numery, natomiast na plikach które mam to nie działa, powtarzające numery sortują się tylko obok siebie. Ki diabeł? może jakieś ukryte znaki?
Awatar użytkownika
shmalu
Użytkownik
Posty: 20
Rejestracja: 2005-07-25, 10:32
Lokalizacja: nowa dęba
Kontakt:

Re: wykluczenie powtarzających się ... ?linii?

Post autor: shmalu »

Przeklej kawałek swoich plików, będzie łatwiej dopasować i przetestować...
--
basket above all !
http://iHoops.pl
pejter
Użytkownik
Posty: 274
Rejestracja: 2005-09-21, 23:47

Re: wykluczenie powtarzających się ... ?linii?

Post autor: pejter »

1

Kod: Zaznacz cały

BE55BA/10X11
BE55BA/12X13
BE55BA/14X15
BE55BA/16X17
BE55BA/18X19
BE55BA/20X22
BE55BA/21X23
BE55BA/22X24
BE55BA/24X26
BE55BA/25X28
BE55BA/27X29
BE55BA/30X32
BE55BA/36X38
BE55BA/41X46
BE55K/6X7
BE55K/8X9
BE55K/10X11
BE55K/12X13
BE55K/14X15
BE55K/16X17
BE55K/18X19
BE55K/20X22
BE78BA/24
BE78BA/27
BE78BA/30
BE78BA/32
BE78BA/34
BE78BA/36
BE78BA/38
BE78BA/41
BE78BA/46
BE78BA/50
BE78BA/55
BE78BA/60
BE78BA/65
BE78BA/70
BE78BA/75
BE78BA/80
BE78BA/AS/1.1/4
BE78BA/AS/1.7/16
BE78BA/AS/1.5/8
BE78BA/AS/1.13/16
2

Kod: Zaznacz cały

BE55AS/5/8x3/4
BE55AS/7
BE55AS/7/16x1/2
BE55AS/7/8x15/16
BE55AS/9/16x5/8
BE55B6
BE55BA/10x11
BE55BA/12x13
BE55BA/14x15
BE55BA/16x17
BE55BA/18x19
BE55BA/20x22
BE55BA/21x23
BE55BA/22x24
BE55BA/24x26
BE55BA/24X27
BE55BA/25x28
BE55BA/27x29
BE55BA/30x32
BE55BA/36x38
BE55BA/41x46
BE55BA/6x7
BE55BA/8x9
BE55BV12
BE55BV6
BE55BV8
BE55K/10x11
BE55K/12x13
BE55K/14x15
BE55K/16x17
BE55K/18x19
BE55K/20x22
BE55K/6x7
BE55K/8x9
pejter
Użytkownik
Posty: 274
Rejestracja: 2005-09-21, 23:47

Re: wykluczenie powtarzających się ... ?linii?

Post autor: pejter »

Oo, No fakt jakoś przegapiłem ;]

Ale ... Dalej ... to może pokolei
Zmieniłem te Xy, i ... dalej to samo, na wklejonych kawałkach działa a na całych plikach jakby nie,
plik "lista" 3811 linii
plik "zbazy" 9089 linii ---- razem 12900 linii
plik wynikowy 12897 linii, czyli 3 usunęło i jest dużo powtarzających się.

ale dłubałem i niespodziewanie zadziałało, jak jeszcze raz przepuściłem tyle że na pliku wynikowym, tzn okazało sie ze usunąłem przypadkiem ostatnią pustą linię na końcu pliku i wtedy zadziałało, wywaliło powtarzające się linie(nie wiem czy wszystkie wszystkie) tak czy siak wynik 800 lini mniej. Nie wiem czemu tak sie dzieje, jak by kogos interesowało to to sa te pliki:
http://rebis.bialystok.pl/pliki/zbazy
http://rebis.bialystok.pl/pliki/lista

Niestety wynik okazał się nie taki jak się spodziewałem, plik "zbazy" zawiera jakieś "śmieci" i po połączeniu z plikiem "lista" wyszło bez sensu.

Może da się to zrobić tak żeby wyświetlić: linie z pliku "lista" niewystępujące w pliku "zbazy" ?
kesay
Użytkownik
Posty: 29
Rejestracja: 2010-06-26, 13:06
Kontakt:

Re: wykluczenie powtarzających się ... ?linii?

Post autor: kesay »

Witam, spójrz:

Kod: Zaznacz cały

$ head -n2 lista | xxd
0000000: 4245 3432 4153 2f31 330d 0a42 4534 324b  BE42AS/13..BE42K
0000010: 2f37 0d0a                                /7..
$ head -n2 zbazy | xxd
0000000: 4245 3030 3033 3130 3030 320a 4245 3030  BE000310002.BE00
0000010: 3033 3130 3030 330a                      0310003.
Czy rozumiesz, o co chodzi? Jeśli nie to podpowiadam. W pliku lista wiersze (nie wszystkie, ale przynajmniej pierwszy :) ) kończą się sekwencją 0d0a, a w pliku zbazy jest tylko 0a

Wywal znaki powrotu karetki z pliku lista, np. tak:

Kod: Zaznacz cały

$ sed -i 's@\r@@' lista
Teraz powinno grać.

Pozdro,
Paweł
Awatar użytkownika
mina86
Moderator
Posty: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

Re: wykluczenie powtarzających się ... ?linii?

Post autor: mina86 »

„$ sed -i 's@\r@@' lista”
Do tego też jest narzędzie co się zowie dos2unix.
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
pejter
Użytkownik
Posty: 274
Rejestracja: 2005-09-21, 23:47

Re: wykluczenie powtarzających się ... ?linii?

Post autor: pejter »

:mrgreen: Dzięki, jeszcze wczoraj dał bym sobie głowę urwać że oba pliki są linuksowe.

Wynik to połączenie obu plików, a jak z pliku "lista" usunąć pozycje występujące w pliku "zbazy" ? to by bardziej zawęziło "obszar poszukiwań".
joi
Użytkownik
Posty: 151
Rejestracja: 2004-10-12, 20:32
Lokalizacja: raczej nie stąd ;)
Kontakt:

Re: wykluczenie powtarzających się ... ?linii?

Post autor: joi »

a może sam byś tak sam zaczął robić swoją pracę (domową?)?
wrzuć w google "shell tutorial" czy też "bash tutorial" i poczytaj

podpowiem, najprościej będzie użyć for, cat i grep
pejter
Użytkownik
Posty: 274
Rejestracja: 2005-09-21, 23:47

Re: wykluczenie powtarzających się ... ?linii?

Post autor: pejter »

:placze: ;-) Chętnie, myślisz że nie próbowałem? Nawet czasem udaje mi sie połapać co i jak. Ale żeby tak na serio, to zajmie +-10 lat, w tym pierwsze 5 na nauczenie się tak solidnie angielskiego, choć piąte przez dziesiąte jakoś rozumiem.
Awatar użytkownika
mina86
Moderator
Posty: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

Re: wykluczenie powtarzających się ... ?linii?

Post autor: mina86 »

„Wynik to połączenie obu plików, a jak z pliku "lista" usunąć pozycje występujące w pliku "zbazy" ? to by bardziej zawęziło "obszar poszukiwań".”
To można pojedynczym grepem zrobić, choć być może nieoptymalnie.
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
kesay
Użytkownik
Posty: 29
Rejestracja: 2010-06-26, 13:06
Kontakt:

Re: wykluczenie powtarzających się ... ?linii?

Post autor: kesay »

pejter! zamiast płakać, po prostu zacznij czytać i jeszcze więcej ćwiczyć. Z czasem stwierdzisz, że już umiesz wystarczająco i cały ten linux jest taki, hmm.. na jedno kopyto ;) Ale dzięki temu łatwiej ogarnąć całość i rozwiązać tego typu problemy samemu. Kiedy samodzielnie coś przećwiczysz - zapamiętasz, kiedy użyjesz gotowca - zapomnisz.

BTW, jak na początku zakładasz, że nie dasz rady, to tak właśnie będzie. Jak potrafisz myśleć logicznie, trochę kombinować i wyszukiwać potrzebne informacje to nawet bez ang. sobie poradzisz.
pejter
Użytkownik
Posty: 274
Rejestracja: 2005-09-21, 23:47

Re: wykluczenie powtarzających się ... ?linii?

Post autor: pejter »

mina86@

Dzięki, grepem poszło ok

grep -v -f pilk2 plik1 >plik3

nie przyszło mi do głowy że to może tyle trwać, chyba z 15 minut mielił, tyle czasu żadnych efektów nie było że myślałem że znowu "wisi".


kesay@
Ogólnie to się z tobą zgadzam :-P Nie zadaję pytań jeśli najpierw nie spróbowałem zrobić czegoś sam, napewno Ty też kiedyś stwierdzisz że to co chcesz zrobić, bez pomocy .... zajmuje za dużo czasu ;-)
Awatar użytkownika
mina86
Moderator
Posty: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

Re: wykluczenie powtarzających się ... ?linii?

Post autor: mina86 »

Podejrzewam, że trwa tak długo bo każdą linijkę z pliku sprawdza z każdym wzorcem.
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
ODPOWIEDZ