[+] BASH - sed, pozostawienie wyszukanego ci

Potrzebujesz pomocy z C, C++, perl, python, itp.
Awatar użytkownika
kodama
Junior Member
Posty: 633
Rejestracja: 23 maja 2010, 22:30
Lokalizacja: Poznań

[+] BASH - sed, pozostawienie wyszukanego ciągu

Post autor: kodama »

Witam.
Czy da się zrobić takie coś, używając polecenia sed? Mam w pliku do wyszukania konkretną wartość (7 cyfrowy ciąg liczbowy) i usunąć z tego pliku wszystko poza nią?
Pozdrawiam

Edycja:
Dobrze, wygląda na to, że sobie chyba poradziłem z tym tematem.

Kod: Zaznacz cały

sed -n -e 's/.*\(3.*\)/\1/p' plik.txt
EDIT: No dobra, prawie sobie poradziłem, bo to działa wtedy, gdy po tych 7 liczbach (ta trójka jest tam na początku celowo - ciąg zaczyna się od cyfry 3) jest koniec linii. Jak zmusić go do tego, żeby odczytał tylko te 7 znaków i nic więcej?

Czasem zdarza się też, że w pliku zahaczy o jakąś kombinację np.: 3erfdsf5, którą też mi wyrzuci jako wynik działania - próbowałem wstawić:

Kod: Zaznacz cały

sed -n -e 's/.*\(3[;digit:]*\)/\1/p' plik.txt
ale bez skutku. Wymyśliłem takie coś:

Kod: Zaznacz cały

sed -n -e 's/.*\(3[0-9][0-9][0-9][0-9][0-9][0-9]\)/\1/p' plik.txt
i z tego co widzę jest w porządku. Tylko pytanie - da się to jakoś ładnie skrócić? I nadal pozostaje kwestia tego, żeby odczytał tylko 7 znaków, nie więcej.
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

Mógłbyś podać kawałek pliku na którym operujesz, było by łatwiej. Na szybko wyszło mi coś takiego:

Kod: Zaznacz cały

sed -n -e 's/.*\([0-9]\{7\}\).*/\1/p' plik.txt
Lub jeśli zawsze na początku liczby jest cyfra 3:

Kod: Zaznacz cały

sed -n -e 's/.*\(3[0-9]\{6\}\).*/\1/p' plik.txt
W perlu wygląda to zdecydowanie lepiej ;)

Kod: Zaznacz cały

perl -pne 's/.*(\d{7}).*/\1/' plik.txt
Awatar użytkownika
kodama
Junior Member
Posty: 633
Rejestracja: 23 maja 2010, 22:30
Lokalizacja: Poznań

Post autor: kodama »

O, to jest dobre i po próbach zanosi się na to jakby miało działać dobrze :) Dziękuję za pomoc kolego lessmian2. Ogólnie na początku miałem lekkie kłopoty ze zrozumieniem składni tego seda, ale widzę, że trzeba się mu przyjrzeć i zaprzyjaźnić z nim bliżej.
ODPOWIEDZ