Linux
通過 shell 腳本從 CSV 文件中刪除沒有數據但只有逗號的最後一行
我正在生成一個 CSV 文件,理想情況下應該有 1 行或 2 行數據,但它就像
11,ABC,3,4,5,6 ,,,,,
我已嘗試使用 sed 和 awk 命令刪除該空行,但沒有成功
sed -i 's/,,//g' fileName.csv
(因為當我們有奇數個逗號時,這不是一個動態解決方案)
awk -F, 'length>NF+1' fileName.csv > fileName.csv
(當我嘗試將其放入文件中時,它會從文件中刪除所有行。也許我對 sed 和 awk 命令的經驗不足是問題所在)。
通過數據傳遞
grep '[^,]'
將提取包含任何非逗號字元的行。它將有效地刪除僅包含逗號的行。
例如:
grep '[^,]' filename.csv >newname.csv
請注意,您不能重定向到您正在讀取的相同名稱,因為 shell 會在執行之前截斷(清空)您重定向到的文件
grep
。
sed
如果您的sed
實現支持以下語法,您也可以將其作為就地編輯來執行:sed -n -i '/[^,]/p' filename.csv
或者
sed -i '/[^,]/!d' filename.csv
awk -i inplace '/[^,]/' filename.csv