繁体   English   中英

使用sed从csv文件中删除“[和]”

[英]Remove “[ and ]” from csv file using 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'

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

当然。

坚持使用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正则表达式的说明:

[ ... ]括号内的任何字符集都会创建一个“字符类”,它是单字符交替的简写。 也就是说, [abc]的含义是“ abc ”。 如果要在字符类中包含文字[] ,可以通过将括号放在包含字符类的相对字符旁边: []abc]包括abc] ,同时[abc[]包括abc[ 所以[]"[]包括["]

sed -e 's/\("\[\)*\(]"\)*//g' File.csv > /tmp/File.csv && mv /tmp/File.csv File.csv
  • 避免删除[]"内部'content' 。(避免]" "[也应该做,但更少出现更复杂的sed动作。
  • Posix版本(因此--posix GNU上的--posix

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM