我有一个奇怪的情况,我正在尝试将一个CSV文件导入Weka,而且我遇到了问题,Weka的卫生方式处理字符串的能力显然非常差。
我已经使用sed删除所有非ASCII字符,但现在我遇到了处理反斜杠的问题。我输入的输入包含某些字段中的转义反斜杠和其他非转义反斜杠(Weka无法正确处理)。
我需要的是一个正则表达式,它会找到反斜杠之前或之后的反斜杠,并添加第二个反斜杠。我正在努力使语法有效,并且想知道是否有人可以帮助我。
答案 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'