Výběr začátku řetězce s programem sed

loscar

Výběr začátku řetězce s programem sed
« kdy: 21. 06. 2010, 10:40:41 »
Dobry den,

chtel bych se zeptat jak se resi pomoci sedu situace kdy potrebuji regularnim vyrazem vybrat zacatek retezce az do prvniho vyskytu nejakeho slova.

Potreboval bych prikaz v sedu ktery provadi to same co grep -o 'slovo.*'

Predem dekuji za odpoved.

loscar
« Poslední změna: 21. 06. 2010, 11:08:37 od Petr Krčmář »


deadmail

Re: Výběr začátku řetězce s programem sed
« Odpověď #1 kdy: 21. 06. 2010, 22:24:10 »
Pokial sa nepouzije ssed (super-sed) podporujuci Perl regexp (.*?), tak sa to da riesit nejakou obklukou:
Kód: [Vybrat]
echo "ahojslovoxyzslovo" | sed -r 's/slovo/qqqqqqqqqq/;s/^.*q{10}/slovo/'

deadmail

Re: Výběr začátku řetězce s programem sed
« Odpověď #2 kdy: 22. 06. 2010, 06:07:22 »
Da sa to urobit aj bez zarazky (tych 10 q, alebo lubovolny iny retazec nevyskytujuci sa v texte):

Kód: [Vybrat]
echo "ahojslovoxyzslovo" | sed -r '/slovo/{:a;s/^slovo/&/;t;s/.slovo/slovo/;ta}'

Fantomas

Re: Výběr začátku řetězce s programem sed
« Odpověď #3 kdy: 22. 06. 2010, 08:41:34 »
S tim grep to funguje treba takhle:
echo 'Hello World' | sed '/W/!d'

deadmail

Re: Výběr začátku řetězce s programem sed
« Odpověď #4 kdy: 22. 06. 2010, 16:50:44 »
lenze v otazke je prepinac -o