Linux

通過 shell 腳本從 CSV 文件中刪除沒有數據但只有逗號的最後一行

  • September 24, 2021

我正在生成一個 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

使用 GNU 就地編輯awk

awk -i inplace '/[^,]/' filename.csv

引用自:https://unix.stackexchange.com/questions/670393