Psal jsem si skriptík pro korektní vkládání rejstříkových záznamů v LaTeXu a narazil jsem na:
ROOT="Smith"
RECORD='\\index{smith@Smith, John jr.}' # smaze radek
RECORD2='\\index{smith@Smith, John jr. }' # "funguje"
RECORD3='\\index{smith@Smith, John jr.' # "funguje"
RECORD4='\\index{smith@Smith, John jr}' # "funguje"
sed -n -e '/'"${RECORD}"'/ p
/'"${RECORD}"'/! s/\('"${ROOT}"'[a-zA-Z.!\?]*\)/\1 '"${RECORD}"'/
/'"${RECORD}"'/! p' text
Pokud použiji na konci substituce $RECORD, tak dané řádky ignoruje.
Pokud použiji $RECORDn, tak (dle mého mínění správně) doplní $RECORD za nalezené slovo obsahující $ROOT.
Soubor text má např. následující obsah:
John Smith je velkolepý -- založil stát Smithosia. Ten samozřejmě do jmenného rejstříku nepatří.
Smithosia?
Smithosia!
Lorem ipsum. Wolfenstein je další z jmen.
Můj výstup:
Výstup, když je použit RECORD2:
John Smith \index{smith@Smith, John jr. } je velkolepý -- založil stát Smithosia. Ten samozřejmě do jmenného rejstříku nepatří.
Smithosia? \index{smith@Smith, John jr. }
Smithosia! \index{smith@Smith, John jr. }
Lorem ipsum. Wolfenstein je další z jmen.
Výstup, když je použit RECORD1:
Lorem ipsum. Wolfenstein je další z jmen.
Pro úplnost účel skriptu:
Pokud se vyskytuje kořen slova ($ROOT) na daném řádku, tak za dané slovo umísti $RECORD.
Nechci rekurzi, či přílišné duplicity, čili ignoruji řádky, kde již $RECORD je.