У меня есть это жало: the string's problem
и я хочу изменить это на:
file 'the string'\''s problem'
Мой код похож на это:
newline=`echo "$string" | sed "s/'/'\\\''/g"`
echo $newline | sed "s|$newline|file '$newline'|g" >> "$newPList"
Но результат этого:
file 'the string'''s problem'
Какие-либо предложения?
Не так усложнил
$ str="string's problem"
$ sed 's/'\''/&\\&&/g' <<<"$str"
string'\''s problem
$ new="file '$(sed 's/'\''/&\\&&/g' <<<"$str")'"
$ echo "$new"
file 'string'\''s problem'
, критически важно заключить в кавычки "$new"
переменная при использовании его.
Это perl
острота, все в одном, без дополнительно строковых конструкций ;)
$ perl -pe "s/^(.*)'(.*)$/file '\$1\'\\\'\'\$2'/" <<< "the string's problem"
file 'the string'\''s problem'