我有一个巨大的(大约半 GiB,不可能使用通常的文本编辑器)CSV 文件,其中的字段用双引号括起来,"abc","def"
但需要一个不带引号的文件(我确信这不会破坏文件的一致性 -其中的值内部永远不会使用逗号)。
如何删除所有引号(不在其位置引入空格)?
答案1
tr
可以这样做:
tr -d \" < infile > outfile
您还可以使用sed
:
sed 's/"//g' < infile > outfile
答案2
另一个版本sed命令:
sed -i s/\"//g file.txt
sed
s特雷姆编辑伊托尔-i
我n-place(就地编辑文件)s
这s替代命令/replacement_from_reg_exp/replacement_to_text/
陈述\"
引号前面有反斜杠 (replacement_from_reg_exp)- 斜杠分隔符之间的空字符串 (替换为文本)
g
G全局(用于替换行中所有出现的情况)
file.txt
文件名
答案3
如果您使用支持 CSV 的库读取数据,则无需删除双引号。本答案的其余部分展示了如何从通用 CSV 文件中删除不需要的双引号,以防您稍后依赖更简单的方法来解析数据。
磨坊主( mlr
) 将能够读取 CSV 数据并仅使用它再次输出
mlr --csv cat file
(使用 with-I
进行“就地”编辑。)
默认情况下,Miller 只会引用需要引用的字段,例如包含嵌入逗号、引号或换行符的字段。
以同样的方式,csvformat
从csvkit同样,只有默认情况下才引用实际需要引用的字段:
csvformat file
该csvformat
实用程序无法进行“就地”编辑,因此您需要将输出重定向到新名称。