Portál AbcLinuxu, 26. dubna 2024 10:40


Dotaz: Nahrazení části textu

3.3.2011 22:26 Honza P.
Nahrazení části textu
Přečteno: 179×
Odpovědět | Admin

Dobrý den. Mám dotaz ohledně použití nástroje sed. Pokud je v souboru několik řádků:

-.zdravim

-.ah-oj

-.jak

-.se---dnes

-.m-as

Jak mohu nahradit sedem pouze první znak (pomlčky) za, například, znak "p" tak, aby pomlčky, které se budou vyskytovat za znakem tečky zůstaly zachovány? Respektive aby výstupem bylo:

p.zdravim

p.ah-oj

p.jak

p.se---dnes

p.m-as

 

Předem děkuji za všechny nápady. Honza.


Řešení dotazu:


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

Odpovědi

3.3.2011 23:10 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Nahrazení části textu
Odpovědět | | Sbalit | Link | Blokovat | Admin
sed 's/-/p/' subor.txt

Vzdy sa nahradi len prva pomlcka v riadku za p.

4.3.2011 06:52 Honza P.
Rozbalit Rozbalit vše Re: Nahrazení části textu
Děkuji za odpověď.

Dovolím si ještě podotázku. První pomlčka na každém řádku není vždy zaručena, na tomto místě se může vyskytovat například "o". Ovšem vím, že zde bude právě jeden znak k nahrazení či ponechání. V takovém případě by se nahradila pomlčka za tečkou (pokud by nějaká byla), jakožto první výskyt (viz řádek 4 níže). Lze tomu nějak jednoduše předejít?

Ukázka: -.zdravim

-.ah-oj

-.jak

o.se---dnes #zde by se sedem nahradila až pomlčka vyskytující se za tečkou a to je nežádoucí

-.m-as

Ještě jednou prosím o radu. Honza.
4.3.2011 07:57 hajoucha | skóre: 22
Rozbalit Rozbalit vše Re: Nahrazení části textu
drobná variace předchozího by nepomohla? Tj.

sed 's/-\./p\./' vstup.txt

tedy první výskyt "-." se nahradí "p." Pokud chcete přesnější odpověď musíte položit přesnější otázku. Konkrétně tedy popsat, kde všude se mohou ty "-" vyskytovat.
4.3.2011 10:46 l4m4
Rozbalit Rozbalit vše Re: Nahrazení části textu
s/^-/p/

A nějaký tutoriál k regulárním výrazům...

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.