我需要更改 csv 檔案中的特定列,而 awk 命令正在完成我的作業。
awk 'BEGIN{FS=OFS=","} {$19 = $1} 1' a.csv
但它會列印結果,我需要將其保存到同一個檔案中以便稍后使用該檔案。
我試過的:
awk 'BEGIN{FS=OFS=","} {$19 = $1} 1' a.csv > a.csv
但它洗掉了所有內容。
uj5u.com熱心網友回復:
GNU awk:
awk -i inplace 'BEGIN{FS=OFS=","} {$19 = $1} 1' a.csv > a.csv
任何 awk:
tmp=$(mktemp) &&
awk 'BEGIN{FS=OFS=","} {$19 = $1} 1' a.csv > "$tmp" &&
mv -- "$tmp" a.csv
后者適用于任何命令。您不能這樣做,cmd file > file因為您的 shell 可以先執行該> file部分以初始化輸出檔案,然后當它嘗試運行該cmd file部分時,file正如您所經歷的那樣,該部分已經是空的。&&在您執行下一步之前,需要使用s 來確保當前步驟成功,否則您最終可能會破壞輸入檔案并丟失其所有內容,如果mktemp或awk由于某種原因失敗。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/313608.html
