Я почти уверен, что LaTeX может быть правильно проанализирован только с помощью LaTeX 1 , и реализация LaTeX в Perl будет настоящей проблемой. Поэтому любое тривиальное решение Perl не сработает при некоторых краевых условиях. Отработка следующего примера
Это цитата {foo}. \ cite {foo} Это cite [foo] {bar}. \ cite [foo] {bar} Это citet {foo, bar}. \ citet {foo, bar}
, который охватывает один необязательный аргумент, несколько цитат, альтернативные формы \ cite
, которые начинаются с \ cite
и переменным количеством пробелов между .
и \ cite
. Следующее выражение perl
, кажется, делает то, что вам нужно
perl -pe 's/(.\s*)(\\cite)([^{]*)(\[[^\]]*\])?{([^}]*)}/\2\3\4\{\5\}./g' afile
Это cite {foo} \ cite {foo}. Это cite [foo] {bar} \ cite [foo] {bar}. Это citet {foo, bar} \ citet {foo, bar}.
Внесение в черный список команд из sudo и разрешение всего остального — плохая идея. Можно просто скопировать /bin/bash
в другое место и запустить его с помощью sudo. Используйте белые списки для команд, которые действительно нужны пользователям.