删除" [和]"从csv文件使用sed

时间:2014-10-14 12:28:11

标签: bash sed

我有一行如此

0,"['low', 'low', 'low']","['better', 'better', 'better', 'better', 'better', 'better']","['True', 'True', 'True', 'True', 'True', 'True', 'True']"

我想摆脱线路教学中的“[]。现在我正在分开运行

  

sed -i's / \“// g'File.csv

     

sed -i's / \ [/ / g'File.csv

     

sed -i's / \] // g'File.csv

获取

0, 'low', 'low', 'low', 'better', 'better', 'better', 'better', 'better', 'better', 'True', 'True', 'True', 'True', 'True', 'True', 'True'

有没有一种有效的方法呢?

2 个答案:

答案 0 :(得分:4)

不确定

坚持使用GNU sed

sed -i 's/[]"[]//g' File.csv

对于非GNU sed(例如OS X附带的BSD版本),-i(就地)选项不可用,因此您必须写入新文件然后替换:

sed 's/[]"[]//g' File.csv >NewFile.csv && mv NewFile.csv File.csv

在这种情况下你可以使用其他命令;使用最短命令行执行此操作(不计算重定向和重命名)可能是tr

tr -d '[]"' <File.csv >NewFile.csv && mv NewFile.csv File.csv

sed正则表达式的说明:

[ ... ]括号内的任何字符集都会创建一个&#34;字符类&#34;这是单字符交替的简写。也就是说,[abc]的含义是&#34; abc&#34;。如果要在字符类中包含文字[],可以将括号放在包围字符类的对面旁边:[]abc]包含{ {1}},abc,而]包括[abc[]ab和{ {1}}。因此c包括[[]"[][

答案 1 :(得分:0)

sed -e 's/\("\[\)*\(]"\)*//g' File.csv > /tmp/File.csv && mv /tmp/File.csv File.csv
  • 以避免移除[内的]"'content'。 (避免使用]" "[也应该这样做,但是对于更复杂的sed动作来说更少发生。
  • Posix版本(GNU sed上的--posix