Portál AbcLinuxu, 4. května 2025 17:26

Dotaz: bash skript, reg.výrazy

8.4.2009 11:45 Jirka
bash skript, reg.výrazy
Přečteno: 350×
Odpovědět | Admin
Dobré skoro poledne
potřebuji zpracovat reg.výrazy vrácené jako odpověď na NAPTR záznam. Dotaz je tel. číslo - např. 420874545487
Odpověď obsahuje "!^.*(...)$!sip:\\\\1@sipserver.com!"
první výraz ^.*(...)$ se aplikuje na 420874545487 a měl bych dostat poslední tři znaky - 487. A právě toto neumím. Grep na tento regexp vrátí 420874545487 a připadá mi to logické. Nakonec se hodnota 487 vymění za \1 v druhé části a dostanem 487@sipserver.com.

Dotaz je 12345678, odpověď bude v jednom souboru na dvou řádcích.
"!^(.*)$!sip:jedna@dva.cz!"
"!^.*([0-9]{4})$!https://www.rfc1035.com/jim\1!"
A výsledný soubor by měl vypadat takto.
sip:jedna@dva.cz
https://www.rfc1035.com/jim5678

Díky za pomoc, použité nástroje (grep, sed..) nechám na vás
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

8.4.2009 12:35 chochi | skóre: 29 | Praha
Rozbalit Rozbalit vše Re: bash skript, reg.výrazy
Odpovědět | | Sbalit | Link | Blokovat | Admin

Ahoj,

Tak na tohle by mel stacit sed (+ nejaka ta omacko okolo) - doufam, ze to co vraci je POSIX ERE (Extended Regular Expression), pak funguje:

$ echo "420874545487" | sed -r 's!^.*(...)$!sip:\\\\\1@sipserver.com!'
sip:\\487@sipserver.com
$ echo "420874545487" | sed -r 's!^(.*)$!sip:jedna@dva.cz!'
sip:jedna@dva.cz
$ echo "420874545487" | sed -r 's!^.*([0-9]{4})$!https://www.rfc1035.com/jim\1!'
https://www.rfc1035.com/jim5487

 

Tzn. je tam potreba na zacetek pridat znak "s", pak to sed primo vezme.

8.4.2009 18:33 Jirka
Rozbalit Rozbalit vše Re: bash skript, reg.výrazy
díky, moc mi to pomohlo.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.