Linux

我需要更改 CSV 文件中的日期

  • August 18, 2017

我有如下範例數據文件(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。

引用自:https://unix.stackexchange.com/questions/386486