2015-11-02 115 views
0

我想从gz(压缩)文件中提取一些.csv文件。我想删除excel文件中空白的行。我使用下面的代码,但它不工作:Sed - 从csv文件中删除空白行

$entoli = 'zcat ' . str_replace(' ', '\ ', $filePath) . ' | sed \'/^\s*$/d\' > ' . str_replace(' ', '\ ', $savePath); 
exec($entoli); 

其中$filePath是原来的压缩和$savePath的目录是提取的文件将被保存的目录。此外,我正在使用str_replace(' ', '\ ', ....),以防万一在路径中有空格。

我为了删除不使用的日期格式开始行前使用此代码,它的工作原理:

$entoli = 'zcat ' . str_replace(' ', '\ ', $filePath) . ' | sed \'/^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/!d\' > ' . str_replace(' ', '\ ', $savePath); 
exec($entoli); 

所以,我相信,只有这条线必须改变:

sed \'/^\s*$/d\' 

回答

1

尝试使用不同的语法后,我设法使其工作:

$entoli = 'zcat ' . str_replace(' ', '\ ', $filePath) . ' | sed \'/^,,,,/d\' > ' . str_replace(' ', '\ ', $temp); 
exec($entoli); 

它的工作原理机智h awk too:

$entoli = 'zcat ' . str_replace(' ', '\ ', $filePath) . ' | awk \'!/^,,,,/\' > ' . str_replace(' ', '\ ', $temp);