我有这个刺痛: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'
有什么建议么?
答案1
不太复杂
$ str="string's problem"
$ sed 's/'\''/&\\&&/g' <<<"$str"
string'\''s problem
$ new="file '$(sed 's/'\''/&\\&&/g' <<<"$str")'"
$ echo "$new"
file 'string'\''s problem'
"$new"
使用变量时引用它至关重要。
答案2
这是perl
一行代码,全部合而为一,无需额外的字符串构造;)
$ perl -pe "s/^(.*)'(.*)$/file '\$1\'\\\'\'\$2'/" <<< "the string's problem"
file 'the string'\''s problem'