Заменить на первый совпадающий символ с помощью sed

Вы предложили 2 идеи в своем вопросе, поэтому два решения

  • setfacl:для установки прав доступа к файлам. Вы можете использовать это, чтобы установить разные права доступа к файлам для каждого пользователя/группы.см. Какие существуют способы установки прав доступа к файлам и т. д. в gnu/linux
  • sudo --group user2или sudo --user user2 --group user1:, чтобы предоставить доступ ко всем файлам, но вам нужно будет добавить группу записи (редактировать umask )и убедиться, что группа по умолчанию является личной группой.

6
02.02.2021, 12:30
3 ответа

Одним из способов преодоления проблемы жадных регулярных выражений является явный поиск строки, состоящей из символов, не являющихся разделителями -, за которыми следует символ-разделитель. В то же время вы, вероятно, можете упростить синтаксис замены с помощью:

sed 's/\^\(\\text{[^}]*}\)/\^{\1}/' input.tex 

Должна быть возможность использовать

sed 's/\^\(\\text{[^}]*}\)/\^{\1}/g' input.tex 

для нескольких совпадений в строке.

5
18.03.2021, 22:32

Я предлагаю это:

$ 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}$
3
18.03.2021, 22:32

Вы почти у цели! Вместо того, чтобы искать «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

Я предполагаю, что это не проблема.

5
18.03.2021, 22:32

Теги

Похожие вопросы