Комментарий к вашему вопросу предлагает более простое решение, но я думаю, что могут быть имена, в которых суффикс 's
отличается, например, имена, заканчивающиеся на s
.Поэтому я выбрал решение, в котором вы берете то, что правильно, и помещаете его посередине.
В качестве разделителя для команды поиска и замены в sed вы можете выбрать все, что захотите.Я выбрал #
, поэтому вам не нужно избегать обратной косой черты в тексте.Спасенные парантезы хранят то, что внутри, в переменных \1
и \2
.
sed 's#<persName>\(.*\)</persName>\(.*\)#<persName>\1\2</persName>#g' testfile
Результат:
<persName>Fred's</persName>
<persName>Wilma's</persName>
Если вы хотите заменить его в файле, вы можете использовать параметр -i
.Но не забудьте сначала проверить результат.