Shell
將 csv 文件中的 datetime 列分別拆分為 MM/YYYY 和 time 列並寫入同一個 csv
我正在嘗試使用 awk,拆分然後列印但遇到錯誤
輸入:
id day userId itemId 1 12/1/17 8:32 2232 tv 2 1/12/18 10:18 3232 fdfs 3 2/9/18 10:50 232 fdsf 4 3/6/18 12:35 345456 fdg
預期產出
id datetime monthyear time userId itemId 1 12/1/17 8:32 12/17 8:32 2232 tv 2 1/12/18 10:18 1/18 10:18 3232 fdfs 3 2/9/18 10:50 2/18 10:50 232 fdsf 4 3/6/18 12:35 3/18 12:35 345456 fdg
怎麼樣
awk -F"\t" ' NR == 1 {$2 = "datetime" OFS "monthyear" OFS "time" } NR > 1 {split ($2, T, "[/ ]") $2 = $2 OFS T[1] "/" T[3] OFS T[4] } 1 ' OFS="\t" file id datetime monthyear time userId itemId 1 12/1/17 8:32 12/17 8:32 2232 tv 2 1/12/18 10:18 1/18 10:18 3232 fdfs 3 2/9/18 10:50 2/18 10:50 232 fdsf 4 3/6/18 12:35 3/18 12:35 345456 fdg
RudiC 展示瞭如何轉換文件。要將其保存回同一文件:
- 使用 GNU awk:
gawk -i inplace '...' file
sponge
從moreutils
包中使用:awk '...' file | sponge file
- 或使用臨時文件
tmp=$(mktemp) awk '...' file > "$tmp" && mv "$tmp" file