Я достаточно хорошо разбираюсь в использовании встроенной функции sed, наряду с ее способностью заменять, а также использовать различные символы в качестве разделителя для его функций, но теперь я обнаружил, что использую функцию "r", чтобы добавитьсодержимое файла добавления после того, как sed обнаружит строку в целевом файле.Я считаю, что это называется командой «ноль или один адрес».
Проще говоря, если файл с именем «letters» содержит
abc
def
ghi
, а «numbers» содержит
123
Тогда использование
sed -i "def r numbers" letters
приводит к тому, что «буквы» становятся
abc
def
123
ghi
Итак, мой вопрос: что произойдет, если «буквы» содержат косые черты?Например, letters2 содержит:
/abc/def/ghi
/def/ghi/jkl
/ghi/jkl/mno
и я хочу добавить «цифры» после строки «/ def / ghi / jkl»?Сначала думают, что простого
sed -i '/def/ghi/jkl r numbers' letters2
будет достаточно, но, конечно, с косой чертой это усложняет ситуацию, учитывая, что это приводит к ошибке «дополнительные символы после команды».Похоже, что в этом случае вы не можете обозначить символ, как вы (например) в стороне замены вещей.Я пробовал (различными способами) такие вещи, как:
sed -i '@/def/ghi/jkl@ r numbers' letters2
, но я продолжаю получать ошибку «unknown command: @».
Я не могу ничего найтионлайн, ни в руководстве о том, как преодолеть это.Любая помощь будет принята с благодарностью!