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