Portál AbcLinuxu, 13. května 2025 20:51
cat soubor | sed -r 's/"([^"]*)"/„\1“/g'
Ale možná uvažuj o tom, jestli nebude lepší nahrazovat ty uvozovky podle toho, jestli je před nimi nebo za nimi mezera.
Jo a asi nemyslíš anglické uvozovky, ale počítačové, angličtina má levou a pravou uvozovku jinou jde mi o jednoduchou konverzi anglických uvozovek na českéA nebylo by jednodušší předpokládat, že otvírací uvozovka má před sebou mezeru a uzavírací ji má za sebou? Pak by stačilo něco jako
sed -e 's/ "/ „/' -e 's/"\([ ,.;!?]\)/“\1/'Tohle by navíc fungovalo i přes víc řádků, což ten původní nápad nezvládne. Lepší řešení by možná bylo použít AWK/PERL/... a pamatovat si, která uvozovka byla poslední. Mimochodem - dávejte do titulku to, co potřebujete vyřešit - to není nahrazování sudých a lichých výskytů, ale předělání uvozovek. Třeba bude někdo vědět konkrétní program - takhle napsané téma ho ale nemusí oslovit
You can quit vi using the command ":q".Běžná anglosaská konvence (nepraktická):
You can quit vi using the command ":q."Další problematický bod je přímá řeč, která když je v angličitně přes více odstavců, podle běžné konvence se na začátku každého odstavce vysází otevírací uvozovky/apostofy, aby se připomnělo, že je stále součástí té přímé řeči, ale na koncích průběžných odstavců se nesází nic, až na konci úplně posledního. Celkově mi přijde, že to bude muset nakonec projít člověk, resp. že je zapotřebí stanovit pravidla pro konkrétní typ textů a styl, a řešit věci jako když se uprostřed odstavce (věty...) objeví otevírací uvozovka, ale ukončení se nevyskytne dostatečně brzy, a přinejmenším na to upozornit coby na možný problém, což prostý regulární výraz neudělá.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.