Portál AbcLinuxu, 25. dubna 2024 14:55


Dotaz: Smazání prvních dvou znaků proměnné přes regulární výraz

28.3.2014 01:11 Jirka696
Smazání prvních dvou znaků proměnné přes regulární výraz
Přečteno: 229×
Odpovědět | Admin
Ahoj,

potřeboval bych smazat z proměnné první dva znaky, které budou z určitého výběru, ale nevím, jak se to s regulárním výrazem píše.
A jedna
B dva
C tři
a chci vypsat jen
jedna
dva
tři
echo "${promenna%A }
toto funguje, ale pokud bych chtěl odstranit více písmen, jak to lze udělat?
$regular='[A,B,C,D].'
echo "${promenna%'$regular'}
toto nefunguje :/


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (Šangala)
28.3.2014 07:06 mkmm
Rozbalit Rozbalit vše Re: Smazání prvních dvou znaků proměnné přes regulární výraz
Odpovědět | | Sbalit | Link | Blokovat | Admin
Znak % odstranuje nejkratsi odpovidajici retezec na konci, k odstraneni nejkratsiho retezce na zacatku slouzi #. Nepouzivaji se regexy, ale globbing (* a ?). Libovolne prvni dva znaky lze odstranit prikazem echo ${promenna#??}

Jestli mas bash, k odstraneni prvniho vyskytu regexu muzes pouzit toto:
reg='[ABCD] '
echo "${promenna/$reg/}"
28.3.2014 07:13 deadmail
Rozbalit Rozbalit vše Re: Smazání prvních dvou znaků proměnné přes regulární výraz
Odpovědět | | Sbalit | Link | Blokovat | Admin
Lubovolny znak sa reprezentuje ?, tak by sa dalo takto:
premenna=${premenna#??}
Ak to ma byt iba z urciteho rozsahu, tak treba regularny vyraz, ale to BASH expanzia nepozna. Vtedy treba pouzit napr. sed, napr. prejedno z pismen ABCD nasledovane medzerou:
premenna=$(echo $premenna|sed "s/^[ABCD] //")

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.