我有一行如此
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'
有没有一种有效的方法呢?
答案 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; a
或b
或c
&#34;。如果要在字符类中包含文字[
或]
,可以将括号放在包围字符类的对面旁边:[]abc]
包含{ {1}},a
,b
和c
,而]
包括[abc[]
,a
,b
和{ {1}}。因此c
包括[
,[]"[]
和[
。
答案 1 :(得分:0)
sed -e 's/\("\[\)*\(]"\)*//g' File.csv > /tmp/File.csv && mv /tmp/File.csv File.csv
[
内的]
,"
或'content'
。 (避免使用]"
"[
也应该这样做,但是对于更复杂的sed动作来说更少发生。--posix
)