Mam plik, który przechowuje dane o numerze telefonu, a także kilka bezużytecznych rzeczy. Próbuję zanalizować numery, a gdy jest tylko jeden numer telefonu/linia, nie jest to problem. Ale kiedy mam wiele numerów, sed pasuje do ostatniego (mimo że wszędzie mówi, że powinien pasować tylko do pierwszego wzorca?), I nie mogę uzyskać innych numerów.SED: wiele wzorów na tej samej linii, jak dopasować/przeanalizować pierwszy
My data.txt:
bla bla bla NUM:09011111111 bla bla bla bla NUM:08022222222 bla bla bla
Kiedy przetwarza na dane, mój pomysł był pierwszy, aby usunąć wszystkie „początkowy” „bla bla bla” przed numerem pierwszego telefonu (więc szukać pierwszego wystąpienia „NUM:”) , a następnie usuwam wszystkie rzeczy po numerze telefonu i otrzymuję numer. Po tym chcę przeanalizować następne wystąpienie z pozostałego ciągu.
Więc teraz, gdy próbuję go sed, zawsze dotrzesz do ostatniego numeru na linii:
>sed 's/.*NUM://' data.txt
08022222222 bla bla bla
>
Przede wszystkim chciałbym, aby zrozumieć, co się dzieje z moim rozumieniem SED. Oczywiście bardziej skuteczne sugestie są mile widziane! Czy moje polecenie sed nie mówi, zamień wszystkie rzeczy przed 'NUM:' na '' (puste)? Dlaczego pasuje zawsze do ostatniego wystąpienia?
Dzięki!
Sed jest chciwy.Jeśli istnieje drugi NUM :, pierwszy może być spożyty przez '. *'. –
+1 dla danych przykładowych, dorozumianych oczekiwanych wyników i niektórych przykładowy kod, który nie działa. Powodzenia. – shellter