Portál AbcLinuxu, 8. listopadu 2025 02:19
.
Mám TeX soubor, kde jsou texty zapsány jako "text přímé řeči" a já bych to potřeboval nahradit za \uv{text přímé řeči}.
Zkoušel jsem něco jako sed 's/\("[^\"]*\"\)/\\\uv\{\1\}/g' a jediné, co na mě sed v lepším případě plive je znak 29: chybný odkaz \1 na pravé straně příkazu „s“
s/\"\([^"]*\)"/\\uv\{\1\}/g ale bacha pokud ti někde chybí nebo přebývá uvozovka tak se ti ouvozovkuje něco co nechceš :)
přibližně totéž v Perlu:
perl -00pe 's/ " ( ?<text_v_uvozovkach> [^"]* ) " /\\uv{$+{text_v_uvozovkach}}/xg'
sed -r 's_"([^"]*)"_\\uv{\1}_g'
Ak su tam aj ine typy zatvoriek, tak spustit viackrat a nahradit " prisluchajucimi znakmi (otvaracia zatvorka a dvakrat zatvaracia).
"` za \uv{ a ," ` za }? Tj. dva sedy a pak už jen doladit případy, kdy vyšlo něco jako: ... \uv{aaa".?
sed -e 's_"\<_\\uv{_g' -e 's_"_}_g'
Já vím, že sed zrovna moc neovládám.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.