Regex 通过命令行将双引号添加到csv文件的第一行
我有这个csv文件,我注意到在导出过程中,它没有添加到起始报价中。事实上,在ubuntu中,如果我键入:Regex 通过命令行将双引号添加到csv文件的第一行,regex,bash,shell,command-line,Regex,Bash,Shell,Command Line,我有这个csv文件,我注意到在导出过程中,它没有添加到起始报价中。事实上,在ubuntu中,如果我键入: head -n 1 file.csv 我得到这个输出: 801","40116","Hazelnut MT -L","Thursday Promo","Large","","5.9000","","801","1.0000","","3.6500","2.2500",".0000","default","","","","","Chatime","02/06/2014","09125a9c
head -n 1 file.csv
我得到这个输出:
801","40116","Hazelnut MT -L","Thursday Promo","Large","","5.9000","","801","1.0000","","3.6500","2.2500",".0000","default","","","","","Chatime","02/06/2014","09125a9cfffd4143a00e73e3b62f15f2","CB01","",".0000","5.9000","6.9000",".0000",".0000",".0000",".0000",".0000",".0000","0","","0","0","0","","","","","","","","","Modern Milk Tea","","","0","","","1","0","","","","","","","","0","Hau Chan","","","","","","","","","","0","","","","","","","-1","","","","","","","","","","","","0","00000000420714AA","2014-06-02","1900-01-01","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
是否有一些命令类型可以帮助我添加缺少的起始引号?这应该适用于每个posix shell:
printf \" | cat - file.csv > repaired-file.csv
如果您对结果满意,可以覆盖原始内容
mv repaired-file.csv file.csv
由于您的文件是70GB大小,您可能希望避免创建第二个文件,但这比看起来更难。当然,也有类似于sed
的inplace选项(-i
)和moreutils
中的海绵
实用程序的功能,但它们并不像您预期的那样工作sed-i
和spoone
都使用临时文件或将整个文件保存在内存中(不再适用于70GB)。关于真实就地编辑的大量研究可以在中找到。结论:没有标准工具支持真正的就地编辑。但是下面的perl
一行程序应该可以工作(已经适应了您的需要)
perl这应该适用于每个posix shell:
printf \" | cat - file.csv > repaired-file.csv
如果您对结果满意,可以覆盖原始内容
mv repaired-file.csv file.csv
由于您的文件是70GB大小,您可能希望避免创建第二个文件,但这比看起来更难。当然,也有类似于sed
的inplace选项(-i
)和moreutils
中的海绵
实用程序的功能,但它们并不像您预期的那样工作sed-i
和spoone
都使用临时文件或将整个文件保存在内存中(不再适用于70GB)。关于真实就地编辑的大量研究可以在中找到。结论:没有标准工具支持真正的就地编辑。但是下面的perl
一行程序应该可以工作(已经适应了您的需要)
有perl,但您也可以在文本编辑器中打开该文件并手动添加引号。它是一个70gb的csv文件。我想我打不开。哦,好的。。。这改变了一切。只是想确定一下:报价单是只在第一行丢失了,还是在每一行都丢失了?就像oguz ismail一样,我假设它只在第一行中丢失,因为你只显示了那一行。@Socowi只在第一行。下一个是正确的引号。有,但你也可以在文本编辑器中打开文件并手动添加引号。这是一个70gb的csv文件。我想我打不开。哦,好的。。。这改变了一切。只是想确定一下:报价单是只在第一行丢失了,还是在每一行都丢失了?就像oguz ismail一样,我假设它只在第一行中丢失,因为你只显示了那一行。@Socowi只在第一行。接下来的是正确的引号。