在R中使用linux系统命令删除特殊字符

时间:2015-03-08 11:00:35

标签: linux r sed

我正在尝试使用R

中的linux系统命令清理文件

我想使用除了文件分隔符(管道分隔)

之外删除特殊字符的命令

在下面的示例中,它是我试图摆脱的斜杠和其他引号

1234|"PJDG"|"CHOCOLATES"|"CHOCOLATE CAKE"
1256|"GADG"|"CAKE \"HA"|"SPECIAL \"HAPPY CHRISTMAS\""
7657|"ASGD"|"WINE"|"RED WINE"
6777|"DAG"|"FRUIT"|"APPLES/LOOSE"

我使用了下面的命令,但它似乎没有删除字符。

sed's / \“?// g'input_file.txt> output_file.txt;

2 个答案:

答案 0 :(得分:3)

如果文件x.txt看起来像这样

cat(readLines("x.txt"), sep = "\n")
# 1234|"PJDG"|"CHOCOLATES"|"CHOCOLATE CAKE"
# 1256|"GADG"|"CAKE \"HA"|"SPECIAL \"HAPPY CHRISTMAS\""
# 7657|"ASGD"|"WINE"|"RED WINE"
# 6777|"DAG"|"FRUIT"|"APPLES/LOOSE"

然后您可以在sed中使用system(),就像这样

system("sed -e 's|[\\\"]||g' x.txt")
# 1234|PJDG|CHOCOLATES|CHOCOLATE CAKE
# 1256|GADG|CAKE HA|SPECIAL HAPPY CHRISTMAS
# 7657|ASGD|WINE|RED WINE
# 6777|DAG|FRUIT|APPLES/LOOSE

您可以将其写入文件。或者,如果要返回R向量,请将intern = TRUE添加到呼叫

答案 1 :(得分:2)

R系统有自己的功能,不需要使用系统。查看subgsub。使用readLines阅读您的文件,按subgsub进行修改,然后将生成的结构保存回单独的文件中。