Вы предложили 2 идеи в своем вопросе, поэтому два решения
setfacl
:для установки прав доступа к файлам. Вы можете использовать это, чтобы установить разные права доступа к файлам для каждого пользователя/группы.см. Какие существуют способы установки прав доступа к файлам и т. д. в gnu/linuxsudo --group user2
или sudo --user user2 --group user1
:, чтобы предоставить доступ ко всем файлам, но вам нужно будет добавить группу записи (редактировать umask )и убедиться, что группа по умолчанию является личной группой. Одним из способов преодоления проблемы жадных регулярных выражений является явный поиск строки, состоящей из символов, не являющихся разделителями -, за которыми следует символ-разделитель. В то же время вы, вероятно, можете упростить синтаксис замены с помощью:
sed 's/\^\(\\text{[^}]*}\)/\^{\1}/' input.tex
Должна быть возможность использовать
sed 's/\^\(\\text{[^}]*}\)/\^{\1}/g' input.tex
для нескольких совпадений в строке.
Я предлагаю это:
$ sed 's/\$\^\\\([^}]*\)/$^\{\\\1}/' file
something $^{\text{TT}}$ and more stuff
something $^{\text{T}}$ and more stuff
something $^{\text{M\times N}}$ and more stuff
something $^{\text{T}} {otherstuff}$
Вы почти у цели! Вместо того, чтобы искать «0 или более символов» внутри блока \text{}
, как вы это делаете с \\text{\(.*\)}
, ищите «0 или более символов, отличных от -}
» :
$ sed 's/\^\\text{\([^}]*\)}/\^{\\{text{\1}}/g' foo.tex
something $^{\{text{TT}}$ and more stuff
something $^{\{text{T}}$ and more stuff
something $^{\{text{M\times N}}$ and more stuff
something $^{\{text{T}} {otherstuff}$
g
, добавленный в конец, включает глобальное сопоставление, что означает, что все совпадения в строке будут заменены. Обратите внимание, что это предполагает, что совпадения не -перекрываются, это не будет работать для чего-то подобного:
something $^{\{text{$^{\{text{BB}}$}}$ and more stuff
Я предполагаю, что это не проблема.