Strona 1 z 1

grep - jak zrobić, by wykrywał wszystkie niepoprawne linijki tekstu?

: 29 grudnia 2010, 12:52
autor: tomekw
Mam plik tekstowy, który wygląda następująco:

Kod: Zaznacz cały

A12345;6
B76543;2
A39547;2
A89234;5
B91354;8
AB19456;4
i tak wygląda poprawnie (tylko taka forma jest dopuszczalna), natomiast możliwe są błędy, np.:

Kod: Zaznacz cały

A12345;6?@#
A12345;6B76543;2A39547;2
 A12345;6 B76543;2 A39547;2
?A12345;6?B76543;2?A39547;2
#@A12345;6#@B76543;2#@A39547;2
Teraz problem polega w tym, bym znalazł te błędne wpisy, poleceniem, i udało się to, ale nie do końca:

Kod: Zaznacz cały

grep -v  [^AB]";"[0-9]$ plik.txt
Wyświetla linijki, które ewidentnie nie pasują, np.: A12345;5e, natomiast już nie chce wyświetlać ciągów jak powyżej, które też są błędne.
Jak zrobić, by wykrywał wszystkie niepoprawne linijki?

: 29 grudnia 2010, 18:00
autor: lessmian2

Kod: Zaznacz cały

grep -v '^[AB]\{1,\}[0-9]\{1,\}\;[0-9]$'

: 30 grudnia 2010, 08:45
autor: tomekw
Niestety nie, nawet spróbowałem:

Kod: Zaznacz cały

grep -v '^[AB]\{1,\}[0-9]\{[color=darkred]5[/color],\}\;[0-9]$'
ale nie pomogło.

: 30 grudnia 2010, 17:05
autor: lessmian2
A do którego nie pasuje? Bo nie napisałeś nawet dla jakiego przypadku źle działa - dla wszystkich podanych przez Ciebie w pierwszym poście było ok.

: 01 lutego 2011, 05:19
autor: tomekw
Sprawa już nieaktualna.
Przepraszam.
Skoro nie udało się rozwiązać problemu, można usunąć wątek.

: 01 lutego 2011, 12:26
autor: fnmirk
tomekw pisze:Sprawa już nieaktualna.
Przepraszam.
Skoro nie udało się rozwiązać problemu, można usunąć wątek.
I za jakiś miesiąc zadasz podobne pytanie, jak nie na tym, to innym forum.

Przynajmniej odpowiedziałbyś na pytanie, co nie działało w Twoim przypadku. Odpowiadający w temacie kolega poświęcił czas, aby zainteresować się Twoim problemem. Sądzisz, że forum społeczności otwartego oprogramowania to taka doraźna pomoc techniczna, dostępna na każde zawołanie. Na ogólną wiedzę składają się wypowiedzi wszystkich użytkowników Debiana. Twoja wypowiedź też może ułatwić komuś innemu życie. Dlatego udziel odpowiedzi.