0

我遇到了一个特殊的情况,我正在尝试将 CSV 文件导入 Weka,但我遇到了 Weka 以卫生方式处理字符串的能力显然极差的问题。

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

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

4

1 回答 1

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'

于 2013-04-28T01:20:09.680 回答