[英]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]
的含义是“ a
或b
或c
”。 如果要在字符类中包含文字[
或]
,可以通过将括号放在包含字符类的相对字符旁边: []abc]
包括a
, b
, c
和]
,同时[abc[]
包括a
, b
, c
和[
。 所以[]"[]
包括[
, "
和]
。
sed -e 's/\("\[\)*\(]"\)*//g' File.csv > /tmp/File.csv && mv /tmp/File.csv File.csv
[
, ]
或"
内部'content'
。(避免]"
"[
也应该做,但更少出现更复杂的sed动作。 --posix
GNU上的--posix
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.