ports.csv ファイルには次のデータがあります。
ファイル名はポータル.csv
ip,time,name
1.1.1.1,2018-08-15 11:05:28:268813353,1.13.0-0007
1.1.1.2,2018-08-16 11:05:32:016469121,1.13.0-0007
1.1.1.3,2018-08-16 11:06:42:316469121,1.13.0-0007
1.1.2.5,2018-08-16 11:15:52:416469121,1.13.0-0007
これらの出力が必要です。時間列データは現在の時間を使用する必要があり、各行に異なる秒数が必要です。
ip,time,name
1.1.1.1,2018-08-17 15:00:01,1.13.0-0007
1.1.1.2,2018-08-17 15:00:02,1.13.0-0007
1.1.1.3,2018-08-17 15:00:03,1.13.0-0007
1.1.2.5,2018-08-17 15:00:04,1.13.0-0007
ベストアンサー1
NR
以下は、コマンドで渡されるepochタイムスタンプを増やすためにGNU Awkを使用するオプションですdate
。
gawk -F, -v ts="$(date +%s)" '
BEGIN{OFS = FS}
NR > 1 {$2 = strftime("%Y-%m-%d %H:%M:%S", ts + NR - 1)}
1' portals.csv
ip,time,name
1.1.1.1,2018-08-17 09:47:17,1.13.0-0007
1.1.1.2,2018-08-17 09:47:18,1.13.0-0007
1.1.1.3,2018-08-17 09:47:19,1.13.0-0007
1.1.2.5,2018-08-17 09:47:20,1.13.0-0007
Perlでも同様の方法:
perl -MPOSIX -F, -lne '
BEGIN{$ts = time()};
$F[1] = strftime("%Y-%m-%d %H:%M:%S", localtime($ts + $. - 1)) if $. > 1;
print join ",", @F
' portals.csv