Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl删除“;“空白”;csv文件中的行_Perl_File_Csv - Fatal编程技术网

Perl删除“;“空白”;csv文件中的行

Perl删除“;“空白”;csv文件中的行,perl,file,csv,Perl,File,Csv,我希望使用Perl删除CSV文件中的空行 我不太确定该怎么做,因为这些行并不完全是“空白”(它们只是一堆逗号) 我还想将输出保存为同名文件,覆盖原始文件 我怎么能这样做呢 编辑:由于网络限制,我不能使用模块或任何源代码…更多的是命令行黑客 perl -i -ne 'print if /[^,\r\n]/' file.csv 如果你想把它放在一个shell脚本中,你可以这样做 #!/bin/sh $(perl -i -n -e 'print $_ unless ($_ =~ /^\,+$/);

我希望使用Perl删除CSV文件中的空行

我不太确定该怎么做,因为这些行并不完全是“空白”(它们只是一堆逗号)

我还想将输出保存为同名文件,覆盖原始文件

我怎么能这样做呢


编辑:由于网络限制,我不能使用模块或任何源代码…

更多的是命令行黑客

perl -i -ne 'print if /[^,\r\n]/' file.csv

如果你想把它放在一个shell脚本中,你可以这样做

#!/bin/sh
$(perl -i -n -e 'print $_ unless  ($_ =~ /^\,+$/);' $*)

您可以使用简单的Perl one liner实现这一点:

perl -i -ne 'print unless /^[,\s]*$/' <filename>
-i
标志意味着输入文件已就位并已修改


注意:如果您担心使用
-i
丢失数据,可以指定
-i.bak
,perl将自动将原始文件写入
。bak

请注意,如果您可以在web上看到模块,则可以将该模块复制并粘贴到代码中。模块不需要安装才能发挥作用。前几天我曾想过这一点,但出于某种原因,我从未真正研究过它是否可行。。。谢谢我建议你会发现没有任何源代码是很难做到的:-@user3707618它可以就地编辑。在执行之前进行备份。很好。在程序中做这样的事情有什么方法吗?我怎么把它放在程序中间,使它重写原始文件?这就是你要做的吗?我假设您有一个脚本要添加此修复程序。否则,您可以将perl放在shebang中。
while(<>) {
   print unless /^[,\s]*$/;
}