Odpowiedzi:
Zakładając, że masz na myśli to, że chcesz usunąć wszystko do ostatniego dwukropka i pozostawić john.doenienaruszone:
echo 'hd_ma_prod_customer_ro:*:123456789:john.doe' |
sed 's/.*://'
Pierwszy wiersz po prostu potokuje łańcuch testowy sedna przykład do celów.
Drugi to sedpodstawienie podstawowe . Część między pierwszą a drugą /jest wyrażeniem regularnym do wyszukania, a część między drugim a trzecim jest tym, co ma ją zastąpić (nic w tym przypadku, ponieważ usuwamy).
Dla wyrażenia regularnego .dopasowuje dowolny znak, *powtarza to dowolną liczbę razy (w tym zero) i :dopasowuje dwukropek. Tak skutecznie, po nim następuje dwukropek. Ponieważ .*może zawierać dwukropek, dopasowanie jest „zachłanne” i obejmuje wszystko do ostatniego jelita grubego.
sed -r 's/:/\t/g' filename | awk -F'\t' '{print $4}'
Ja zastąpienie wszystkich wystąpień : o karcie , a następnie za pomocą awkwyodrębnić john.doe ciąg.
Jeśli nie masz pliku, możesz spróbować.
echo 'hd_ma_prod_customer_ro:*:123456789:john.doe' | sed -r 's/:/\t/g' |
awk -F'\t' '{print $4}'
Zgodnie z komentarzami Graeme możemy użyć awkdo wydrukowania ostatniej kolumny samodzielnie, używając NFzmiennej awkjak poniżej.
echo 'hd_ma_prod_customer_ro:*:123456789:john.doe' | sed -r 's/:/\t/g' | awk -F'\t' '{print $NF}'
Włączenie komentarzy Graeme, aby pozbyć się niepotrzebnych sed
Polecenie można zmodyfikować jak poniżej.
echo 'hd_ma_prod_customer_ro:*:123456789:john.doe' | awk -F':' '{print $NF}'
awk. Zasadniczo próbuję przetestować polecenia, które pierwotnie otrzymałem w odpowiedzi i próbuję je zmodyfikować zgodnie z wymaganiami użytkownika. :)
-FOpcja awkokreśla separator pól. Jeśli zdecydujesz awksię użyć dwukropka, nie ma potrzeby zastępowania dwukropka tabulatorami. Ponadto, jeśli chcesz uzyskać ostatnie pole, którego możesz użyć $NFzamiast $4, działałoby to, jeśli nie zawsze są 3 dwukropki.
Inna metoda wykorzystująca awk:
awk -F: '{ print $NF }'
Proszę spróbować
edycja: usunięto kotwicę
echo 'abc:fjk' |sed 's/.*:/john.doe/g'
i do usunięcia
echo 'abc:fjk' |sed 's/.*://g'
^Kotwica ma znaczenia w przypadku, gdy którakolwiek Pytanie lub w Twojej przykładzie sprawy. Każdy adres zaczynający się od /.*implikuje ^.
awk, dlaczego po prostu nie zrobićawk -F:?