原始測驗檔案:

我想在 Unix 中使用 awk 和 gsub 函式在 CSV 檔案中所有列的末尾添加一個新列(CSV 檔案名)。
輸入資料(檔案名 test.csv):
col1,col2,col3
ab, cd, ef
gh, ij, kl
mn, op,qr
輸出檔案應如下所示:
col1,col2,col3,test.csv
ab,cd,ef,test.csv
gh,ij,kl,test.csv
mn,op,qr,test.csv
我試過下面的代碼:
awk '{gsub(/ /,",",$0);print $0,",",FILENAME > "test.csv"}' test.csv
使用它,檔案名將附加在第二列而不是最后一列:

它適用于 .txt 檔案,但不適用于 .csv 檔案;我的要求是處理這兩種型別的檔案以在末尾附加檔案名。
uj5u.com熱心網友回復:
一些經過證明的努力會很好,但是:
awk -F, '{gsub(/ /,"");print $0","FILENAME}' test.csv
col1,col2,col3,test.csv
ab,cd,ef,test.csv
gh,ij,kl,test.csv
mn,op,qr,test.csv
將輸出重定向到臨時檔案,然后用它替換原始檔案。
awk -F, '{gsub(/ /,"");print $0","FILENAME}' test.csv > tmp.csv && mv tmp.csv test.csv && cat test.csv
col1,col2,col3,test.csv
ab,cd,ef,test.csv
gh,ij,kl,test.csv
mn,op,qr,test.csv
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/512514.html
