0

..次のようにいくつかのCSVを変更する必要があります...

これは私が持っているものです:

2012-08-13 00:15:15; 768.548
2012-08-13 00:30:15; 768.625
2012-08-13 00:45:15; 768.667
2012-08-13 01:00:15; 768.729
2012-08-13 01:15:15; 768.785
2012-08-13 01:30:15; 768.827

しかし、私の分析に必要なのはこれです:

2012-08-13 00:15:15; xxx
2012-08-13 00:30:15; 0.077
2012-08-13 00:45:15; 0.042
2012-08-13 01:00:15; 0.062
2012-08-13 01:15:15; 0.056
2012-08-13 01:30:15; 0.042

私がする必要があるのは、上の行から実際の行を引くことです。

私はそれらのファイルの合計を計算するいくつかの単純なシェルスクリプトを実行しましたが、それほど複雑なことは実行しませんでした...

また、追加の課題があります。最初の行/値は、別のCSVにある前日の値で減算する必要があります。

あなたが助けることができることを願っています

4

1 に答える 1

0

ちょっとしたawkスクリプトはどうですか?

awk -F';' 'NR==1 {print $1 "; xxx"}; NR > 1 {print $1 "; " $2 - x} {x=$2}' < your_file.csv

最初の行(xxx現在のところ)については、小さなシェル関数を記述します。

get_last_value()
{
## first argument is the filename
    tail -n 1 $1 | cut -d';' -f2
}

次に、上記のスニペットを次のように変更します

awk -F';' 'NR==1 {print $1 "; " $2 - '$(get_last_value PREVIOUS)'}; NR > 1 {print $1 "; " $2 - x} {x=$2}' THIS_FILE

そして、あなたがする必要があるのは、各呼び出しのPREVIOUSとの組み合わせを取得することです。THIS_FILEまた、最初のファイルは、上記の調整されていないスニペットで処理する必要があることに注意してください(以前の値がないため)。

于 2012-08-13T09:40:05.707 に答える