2017-02-20 49 views
0

我想將文件拆分爲多個文件並以日期格式保存文件。使用awk將文件拆分爲多個文件,但採用日期格式

這個命令爲什麼不起作用?

awk -v DATE= date '+%d%m%Y'-F"," 'NR>1 { print > "Test_" DATE ".CSV_"$1".csv"}' Testing.CSV 
+0

這是http://stackoverflow.com/questions/42292805/splitting-content-by-id-1st-column-and-generate-new-data-file-based-on-format –

+0

的後續行動爲什麼不使用awk自己的日期函數呢?我認爲不需要使用shell版本。 – grail

回答

2

這應該工作

awk -F, -v date=$(date +%d%m%Y) 'NR>1{print > "Test_"date".CSV_"$1".csv"}' file 

如果沒有,建議先

awk -v date=$(date +%d%m%Y) 'BEGIN{print date}' 

檢查日期是否正確設置爲awk變量。

+0

@RavinderSingh:這是我的成功命令:awk -v DATE =「$(date +」%Y%m%d「)」-F「,」'NR> 1 {print>「Assignment _」$ 1「」DATE「 .csv「}'Text_01012020.CSV,但它出來這個:Assignment_」A「_01012017我想刪除」__「,你能幫我嗎? – FARAH

+0

如果您不想要下劃線字符,請將其從命令中刪除。 DATE之前的空字符串「」不是必需的。另外,不推薦所有大寫變量命名,因爲它可以無意中覆蓋'awk'定義的變量。 – karakfa

+0

我只是想刪除雙重quoatation,因爲它「$ 1」,那麼它會出現「A」,我只是希望它只出現一個沒有雙引號 – FARAH

1

@FARAH:嘗試:

awk -v DATE=$(date +%d%m%Y) -F"," 'NR>1 { print > "Test_" DATE ".CSV_"$1".csv"}' Input_file 

由於存在缺乏關於樣本的信息和預期輸出,看到你的命令需要一些微調,儘量上面,讓我們知道,如果這有助於。

+1

你是不是指'$(date +%d%m%Y)'?目前,'DATE'被設置爲文字字符串'date +%d%m%Y'。 –

+0

awk -v DATE =「$(date +」%Y%m%d「)」-F「,」'NR> 1 {print>「Test_」DATE「.CSV _」$ 1「.csv」}'input_file I試試這個..也不能\ – FARAH

+0

謝謝你本傑明,我現在糾正了,謝謝你在這裏指導,我沒有實際測試過前一個。 – RavinderSingh13