[英]Regex for escaping quotes in a string
我的文件中有一個字符串
"abc def ghi " klm "ghi ";
我想轉義字符串中所有出現的“,結果輸出
"abc def ghi \" klm \"ghi";
由於sed不放眼未來,我認為我們需要做兩次。 這是代碼:
echo '"abc def ghi " klm "ghi ";' | sed -r 's/(\")/\\"/g' | sed -r 's/(^\"|\";$)/";/g'
# ^ Print the text ^ Replace all " with \" ^ Replace the first and the last \" back to "
希望這可以幫助
awk
$ awk '{gsub("\"","\\\"")}1' file
abc def ghi \" klm \"ghi
要么
$ awk -vq="\042" '{gsub(q,"\\"q)}1' file
abc def ghi \" klm \"ghi
我設法在sed中做到了
> echo "abc def ghi \" klm \" ghi"
abc def ghi " klm " ghi
> echo "abc def ghi \"klm \" ghi" | sed 's/"/\\"/g'
abc def ghi \" klm \" ghi
您無需將sed
傳遞到sed
,您可以一步完成所有操作:
echo '"abc def ghi " klm "ghi ";' | sed 's/\"/\\"/g; s/^\\"\(.*\)\\"/\"\1\"/'
某些版本的sed
更喜歡這種方式:
echo '"abc def ghi " klm "ghi ";' | sed -e 's/\"/\\"/g' -e 's/^\\"\(.*\)\\"/\"\1\"/'
我使用了一個捕獲組,但是您可以改用替代。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.