Есть такой кусок кода:
insertAfter='#!/bin/bash'
fileName='./file.txt'
insertAfterEsc=`printf "%q" "$insertAfter"`
cmd="sed '/"$insertAfterEsc"/,$ d' < "$fileName" > /tmp/sedHead.txt"
echo "$cmd" | bash
Переменная insertAfter - это строка, может быть с любыми символами, и ее содержимое надо подставить в sed для поиска. Поэтому для подстановки в sed используется переменная insertAfterEsc.
И мне нужно найти нормальный метод экранирования. Метод:
insertAfterEsc=`printf "%q" "$insertAfter"`
Не работает как надо, потому что, например, не экранирует прямые слеши «/».
Вопрос: как экранировать строку, чтобы ее можно было подставить в sed, и все символы ее считались просто символами?