![CSV 파일의 날짜를 변경해야 합니다. [닫기]](https://linux55.com/image/116314/CSV%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EB%82%A0%EC%A7%9C%EB%A5%BC%20%EB%B3%80%EA%B2%BD%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EB%8B%A4.%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
아래와 같은 샘플 데이터 파일(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을 생성하는 것이 아닙니다.
답변2
날짜의 일수를 고정된 값(예: 15)으로 간단히 변경하려면 다음을 수행할 수 있습니다.
sed 's/[0-9]*/15/' your.csv
이 파일에서 변경하려면 해당 -i
옵션을 sed
지원하는 경우 추가하세요.
여러 달에 걸쳐 매일 이 작업을 자동으로 수행하려면 python
또는 같은 다른 도구를 사용하는 것이 좋습니다 perl
.
고쳐 쓰다:
아니면 sed
즐거운 시간을 보내세요:
sed -n 'p;x;s/^/0123456789_/;H;g
:a
s#\(.\)\(/.*\1\)\(.\)#\3\2\3#
s/^0_/10/;s/^1_/20/;s/^2_/30/
/^31.0[46]/s/1/2/;s#^32/0\(.\)\(.*\1\)\(.\)#01/0\3\2\3#
P;\#^01/08#!ba' sample.csv
그러면 주어진 날짜부터 시작하여 각 행에 각 날짜가 14/03
곱해 집니다 01/08
. 술을 너무 많이 마셔서 죄송합니다.