Я хочу изменить каждый первый /
в стороне \ukindex
на !
.
E.g. \ukindex{duality/weak|)}%
becomes \ukindex{duality!weak|)}%
.
Я могу найти все такие вхождения с помощью grep linear-programming.tex -e '\ukindex{[^/^}]\+/'
.
Но я не знаю, как написать для него соответствующий sed
. Это не работает:
sed -i 's/\ukindex{[^/^}]\+//\ukindex{[^/^}]\+!/g'
Итак, это работает следующим образом
sed -i 's/\(\ukindex{[^/^}]\+\)\//\1!/g'
()
в первой части определяют группы (фактически строки), которые могут быть повторно использованы во второй части\1
во второй части являются ссылками на первую группу, взятую в первой части