Linux
我需要更改 CSV 文件中的日期
我有如下範例數據文件(csv),需要從範例文件中生成大量數據。為此,我需要更改時間戳中的日期(DD)並執行 for 循環以生成更多數據。
14/03/2017 00:05:58,General2,General3,General4,General5,General6,General7
這是 bash 中的一種可能性(在 Ubuntu 16.04.3 LTS 上嘗試過)
將您的 csv 放入名為 yourfile.csv 的文件中(或更改此程式碼),然後執行:
#!/bin/bash DATE=$1 for i in `seq 1 30`; do NEWDATE=`date -d"${DATE}+${i}day" +'%d/%m/%Y'` while read line; do echo $line | sed -u -r "s#^.{10}#${NEWDATE}#" done <yourfile.csv done
它將為每個輸入行生成 +30 天,因此您只需要包含 1 行的文件。哦,它接受日期作為參數,並將從該日期開始生成 +30 天的數據。
更新緩慢:試試這個,也許它對你來說更快:
#!/bin/bash DATE=$1 let i=0 while read line; do let i=(i++ % 30) NEWDATE=`date -d"${DATE}+${i}day" +'%d/%m/%Y'` echo $line | sed -u -r "s#^.{10}#${NEWDATE}#" done <yourfile.csv
它將是 1M 行將產生 1M 行,而不是 1M 產生 30M。