Bash - expr - problem z regex


(dobaczenko) #1

Potrzebuje komendy zwracającej nr wniosku z podanego stringa. Zrobiłem coś takiego:

expr “Wniosek  numer: FKT234567 - Rodzaj prywatny, cośtam, nieistotne” : ‘(.*FKT.[0-9]*)’ 

 

…co zwraca coś takiego:

Wniosek numer: FKT234567

 

…a chcę żeby zwracał coś takigo:

FKT234567

 

Zaznaczam że postać stringa może być różna,  np. Wniosek zgłoszony numer:FKT234567, albo FKT123456 - masz powiadomienie itd.

Wyrażenia regularne to moja ewidentnie słaba strona. Podpowie ktoś?


(nintyfan) #2

Sprawdź czy po skasowaniu pierwszej kropki i zaraz po niej gwiazdki wszystko pójdzie.


(dobaczenko) #3

Niestety nie. Wtedy nic nie zwraca. 

Co prawda mogę wykorzystać fakt że expr zwraca mi ciąg kończący się nr wniosku, ale wolałbym takie wyrażenie które zrobi to samo. Na przyszłość. 


(Numer_inaczej) #4
echo "Wniosek  numer: FKT1234567 - Rodzaj prywatny, cośtam, nieistotne"|sed -n 's/.*\(FKT[0-9]*\).*/\1/p'

 

Można pisać dowolną frazę przed i po FKT, które może mieć dowolny numer.

O to chodziło?

@nintyfan - Twój podpis mnie rozwalił :smiley:


(dobaczenko) #5

Oooo tak. Dzięki. Można zamykać.