我正在尝试在单引号和双引号之前添加反斜杠。我的问题是我想排除三引号。
我现在所做的是:
单引号:
sed -e s/\'/\\\\\'/g test.txt > test1.txt
双引号:
sed -e s/\"/\\\\\"/g test.txt > test1.txt
我有这样的文字:
1,"""Some text XM'SD12X""","""Some text XM'SD12X""","""Auto " Moto " Some text"Some text"""
我想要的是:
120,"""Some text\'SD12X""","""Some text XM\'SD12X""","""Auto \" Moto \" Some text\"Some text"""
答案 0 :(得分:1)
如果perl
没问题:
perl -pe 's/"{3}(*SKIP)(*F)|[\x27"]/\\$&/g'
"{3}(*SKIP)(*F)
请勿更改三重双引号
(\x27{3}|"{3})(*SKIP)(*F)
|[\x27"]
匹配单引号或双引号\\$&
前缀\
到匹配部分使用sed,您可以将三引号替换为换行符(因为默认行与行的用法,模式空间中不能出现换行符),然后替换单引号/双引号字符,然后将换行符改回三引号。
# assuming only triple double quotes are present
sed 's/"""/\n/g; s/[\x27"]/\\&/g; s/\n/"""/g'