У меня есть LaTeX
документ, в котором изменения в тексте и уравнениях выполнены красным цветом, чтобы их можно было отличить от немодифицированного текста:
{\color{red} MODIFIED TEXT OR EQUATION GOES HERE.}
Это изменение может быть одним словом, фразой, предложением, абзацем или уравнением. Например:
\pi \rho \hat{\bf x} \int\omega_{\color{red} \theta}
или
{\color{red} This work presents the ``numerical study'' of convection in vertical annuli;}
Как мне написать perl
однострочный текст, который может заменить {\color{red} MODIFIED TEXT OR EQUATION GOES HERE.}
на MODIFIED TEXT OR EQUATION GOES HERE.
? Я имею в виду удаление {\color{red}
и правую фигурную скобку }
во всем LaTeX
документе.
решение1
perl -p -i -e 's/{\\color{red}(.*)}/\1/g' filename
объяснение флагов (изhttps://stackoverflow.com/a/6302045/330830):
-p: помещает цикл печати вокруг вашей команды, чтобы она действовала на каждую строку стандартного ввода. Используется в основном для того, чтобы Perl мог обойти awk по мощности И простоте :-)
-e: Позволяет вам предоставить программу как аргумент, а не в файле. Вам не хочется создавать файл скрипта для каждой маленькой однострочника Perl.
-i: Изменяет ваш входной файл на месте (создавая резервную копию оригинала). Удобно для изменения файлов без процесса {copy, delete-original, rename}.
решение2
Попробуй это:
$ echo "{\color{red} MODIFIED TEXT OR EQUATION GOES HERE.}" | \
perl -pe 's/\{\\color\{red\} (.*?)\}/$1/g'
MODIFIED TEXT OR EQUATION GOES HERE.