MitS Napisano Grudzień 30, 2010 Zgłoszenie Share Napisano Grudzień 30, 2010 Witajcie, mam do was pytanie, które nurtuje mnie od kilku dni i jest związane z AWK. Mam sobie plik tekstowy sample.txt z zawartością: SCREEN=:2;PID=5521;USER=sample_user1 moim problemem jest wyciągnięcie numerka PID z pliku. Próbowałem robić coś na wzór: awk '$1 ~ /PID=([0-9]+)/ { print $1 }' sample.txt itp. ale cały czas wyświetla mi się dopasowana linijka a nie znaleziony numer PID - czyli wynikiem powinno być w tym wypadku: 5521 Macie pomysły jak takie coś zrealizować ? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Grudzień 30, 2010 Zgłoszenie Share Napisano Grudzień 30, 2010 Najprosciej awk -F";" '{print $2}' sample.txt Chyba, ze sam numer bez "PID=" chcesz wyciagnac albo PID nie zawsze jest po 1. sredniku. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
MitS Napisano Grudzień 30, 2010 Autor Zgłoszenie Share Napisano Grudzień 30, 2010 no własnie to juz przerabiałem - PDI nie zawsze jest na drugiej pozycji, ponadto to wyciąga "PID=5521" a moim założeniem jest wyciagnięcie samego numerka 5521. Jakieś dodatkowe pomysły ? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
andrew Napisano Grudzień 30, 2010 Zgłoszenie Share Napisano Grudzień 30, 2010 To użyj 2 x awk awk -F"PID=" '{print $2}' sample.txt | awk -F\; '{print $1}' Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
MitS Napisano Grudzień 30, 2010 Autor Zgłoszenie Share Napisano Grudzień 30, 2010 Rewelacja, o tym nie pomyślałem Dziekuje za odpowiedz i pozdrawiam Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Grudzień 30, 2010 Zgłoszenie Share Napisano Grudzień 30, 2010 albo sed echo "SCREEN=:2;PID=5521;USER=sample_user1" | # wiedzieliscie, ze mozna dac komentarz po "|" ? sed -e 's/.*PID=\([0-9]\+\).*/\1/g' wynik 5521 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
MitS Napisano Grudzień 30, 2010 Autor Zgłoszenie Share Napisano Grudzień 30, 2010 oo te rozwiązanie nawet mi bardziej pasuje dzieki Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Grudzień 30, 2010 Zgłoszenie Share Napisano Grudzień 30, 2010 W sumie to jest taki jakby słownik, więc zawsze należy odwoływać się poprzez klucz jak to zrobił borzole. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
neometal Napisano Grudzień 30, 2010 Zgłoszenie Share Napisano Grudzień 30, 2010 albo sed echo "SCREEN=:2;PID=5521;USER=sample_user1" | # wiedzieliście, że można dać komentarz po "|" ? sed -e 's/.*PID=\([0-9]\+\).*/\1/g' wynik 5521 borzole możesz mi powiedzieć co robi ta jedynka na końcu i plus w środku? Bawiłem się trochę sed ostatnio ale tu poległem. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
bormarek Napisano Grudzień 30, 2010 Zgłoszenie Share Napisano Grudzień 30, 2010 Odrobinę inaczej zapisane :~$ cat test_awk | awk -F";" '{print $2}' | awk -F"=" '{print $2}' 5521 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Grudzień 30, 2010 Zgłoszenie Share Napisano Grudzień 30, 2010 :~$ cat test_awk | awk -F";" '{print $2}' | awk -F"=" '{print $2}'5521 PDI nie zawsze jest na drugiej pozycji Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
bormarek Napisano Grudzień 30, 2010 Zgłoszenie Share Napisano Grudzień 30, 2010 czytanie ma przyszlosc ale chcialem dobrze Ale rozwiazanie trywialne jak sie na to spojrzy 2x Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Grudzień 30, 2010 Zgłoszenie Share Napisano Grudzień 30, 2010 no więc tak, \1 reprezentuje wzorzec w nawiasach i ozn. przepisz w nienaruszonym stanie \+ działa podobnie do *, z tym że wzorzec musi wystąpić "przynajmniej raz" Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się