Используя sed
, вы можете изменить только третье вхождение вашего шаблона, которое здесь является точкой с запятой.
sed 's/;/;INSERTED_STRING;/3' <<<"$string"
Редактировать:Чтобы заменить N th вхождение строки перед другим конкретным Pattern Stringkeyword
(«относительным вхождением», в вашем случае 2 nd вхождением ), если строки совпадают с uniqe command
строка.):
sed -r '/command/ s/([^;]*;){1}keyword/INSERTED_STRING;&/' <<<"$string"
В общем, это прекрасное количество снарядов. dash
— это реализация /bin/sh
по умолчанию, а bash
— интерактивная оболочка по умолчанию, и вместе они составляют первые четыре элемента. zsh
— это обычная пользовательская оболочка с большим количеством функций, и многие опытные пользователи, вероятно, будут использовать ее.
tmux
и screen
— мультиплексоры терминалов, которые позволяют пользователям переключаться между несколькими окнами терминалов. Они очень часто используются и перечислены в /etc/shells
, потому что некоторые люди устанавливают их как свою оболочку, поэтому они всегда запускаются при входе в систему.
Единственное, что делает их наличие в /etc/shells
, — это позволяет пользователям устанавливать их в качестве оболочки входа в систему, если они установлены. Все они широко используются и считаются безопасными для обычных пользователей. Если у вас есть проблемы с безопасностью пакетов, вы можете удалить их (для zsh
, tmux
и screen
), и это не позволит людям их использовать. dash
и bash
считаются важными, и если вы попытаетесь удалить их, вы сломаете свою систему.
Я считаю, что я достаточно серьезно отношусь к вопросам безопасности, и все эти программы у меня в системе не беспокоят, и я администрирую системы для своей работы, в которых они тоже есть. Если у вас регулярно устанавливаются обновления безопасности, проблем быть не должно.