当它们不总是显示为非转义时,转义它们出现在文件中的反斜杠

时间:2013-04-27 21:59:39

标签: regex csv sed escaping weka

我有一个奇怪的情况,我正在尝试将一个CSV文件导入Weka,而且我遇到了问题,Weka的卫生方式处理字符串的能力显然非常差。

我已经使用sed删除所有非ASCII字符,但现在我遇到了处理反斜杠的问题。我输入的输入包含某些字段中的转义反斜杠和其他非转义反斜杠(Weka无法正确处理)。

我需要的是一个正则表达式,它会找到反斜杠之前或之后的反斜杠,并添加第二个反斜杠。我正在努力使语法有效,并且想知道是否有人可以帮助我。

1 个答案:

答案 0 :(得分:2)

请尝试以下操作 - sed 's/\\\\/@@_@/g; s/\\/\\\\/g; s/@@_@/\\\\/g'

首先使用令牌替换转义的反斜杠,转义单个反斜杠并将令牌更改为转义反斜杠。

选择文件中不存在的令牌。

echo 'asdfj\lasdf\\asldf\oweur\\lasjd;lf\\lasjfl\asdfsdf' | \
  sed 's/\\\\/@@_@/g; s/\\/\\\\/g; s/@@_@/\\\\/g'

结果:
asdfj\\lasdf\\asldf\\oweur\\lasjd;lf\\lasjfl\\asdfsdf

另一个选项 - sed 's/\([^\\]\)\(\\\)\([^\\]\)/\1\\\\\3/g'