在单引号和双引号之前添加反斜杠

时间:2020-10-17 14:01:00

标签: regex sed

我正在尝试在单引号和双引号之前添加反斜杠。我的问题是我想排除三引号。

我现在所做的是:

单引号:

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"""

1 个答案:

答案 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'