Имея файл, содержащий повторяющиеся строки с комментариями, например:
# ScriptAlias /cgi-bin/ "somepath"
# ScriptAlias /cgi-bin/ "otherpath"
Я хочу добавить строку только после последнего вхождения, что приводит к
# ScriptAlias /cgi-bin/ "somepath"
# ScriptAlias /cgi-bin/ "otherpath"
ScriptAlias /cgi-bin/ "mypath"
Для этого я использую эту команду:
sed -i 's:^\(.*ScriptAlias /cgi-bin/.*\):\1 \nScriptAlias /cgi-bin/ "mypath":' file
Но это приводит к добавлению моей строки после каждого вхождения, например:
# ScriptAlias /cgi-bin/ "somepath"
ScriptAlias /cgi-bin/ "mypath"
# ScriptAlias /cgi-bin/ "otherpath"
ScriptAlias /cgi-bin/ "mypath"
Как я могу указать sed заменить только последнее вхождение ?
EDITED:
Если нет способа решить эту проблему с помощью sed (, как указано в комментариях ), пожалуйста, предоставьте альтернативы, достигающие того же результата, спасибо.
EDITED:
Повторяющиеся строки могут быть разделены и с другими строками между ними, например
# ScriptAlias /cgi-bin/ "somepath"
# ScriptAlias /cgi-bin/ "otherpath"
# ScriptAlias /cgi-bin/ "another-path"
ScriptAlias /foo/ "just-jump"
# ScriptAlias /cgi-bin/ "that's the last"