2015-11-02 128 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);