CSVファイルの日付を変更する必要があります。 [閉じる]

CSVファイルの日付を変更する必要があります。 [閉じる]

以下のサンプルデータファイル(csv)があり、サンプルファイルから大量のデータを生成する必要があります。これを行うには、タイムスタンプの日付(DD)を変更し、forループを実行してより多くのデータを生成する必要があります。

14/03/2017 00:05:58,General2,General3,General4,General5,General6,General7

ベストアンサー1

これは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を生成しません。

おすすめ記事