gawkを使用してCSVファイルに条件付きで新しいヘッダーを導入する方法

gawkを使用してCSVファイルに条件付きで新しいヘッダーを導入する方法

csvファイルがありますが、列番号だけを抽出したいと思います。7そして11。列7(その列に値がある)の値に応じて、OKまたはその横に列(マップ位置KOと呼ばれる)を挿入したいと思います。value

OK -> 0
KO -> 1

また、最初に単純な文字列列を追加しました。

私の.awkファイルは次のとおりです。

BEGIN {FS=";";OFS=","}
{
    value=0
    if($7=="KO") {
        value=1
    }
    print "Measure_QS",$7,value,$11 
}

このファイルを使用してください。

gawk -f converter.awk Dataset.csv | head -n 10

次のコンテンツを提供してください。

Measure_QS,result,0,time_stamp
Measure_QS,OK,0,2020-01-17 11:53:33.000
Measure_QS,OK,0,2020-01-17 11:53:22.000
Measure_QS,OK,0,2020-01-17 11:51:42.000
Measure_QS,OK,0,2020-01-17 11:51:30.000
Measure_QS,OK,0,2020-01-17 11:51:06.000
Measure_QS,OK,0,2020-01-17 11:50:53.000
Measure_QS,OK,0,2020-01-17 11:50:41.000
Measure_QS,OK,0,2020-01-17 11:50:29.000
Measure_QS,OK,0,2020-01-17 11:50:17.000

タイトルはMeasure_QS,result,0,time_stamp次のとおりです。Measure_QS,result,value,time_stamp

私はどこで間違っていますか?

ベストアンサー1

NR変数を使用してこの問題を解決できました。gawk

BEGIN {FS=";";OFS=",";print "measurement","result","value","time_stamp"}
{
    value=0
    if(NR!=1) {
        if($7=="KO") {
            value=1
        }
        print "Measure_QS",$7,value,$11
    }
}

これはうまくいきます

gawk -f converter.awk Dataset.csv | head -n 10
measurement,result,value,time_stamp
Measure_QS,OK,0,2020-01-17 11:53:33.000
Measure_QS,OK,0,2020-01-17 11:53:22.000
Measure_QS,OK,0,2020-01-17 11:51:42.000
Measure_QS,OK,0,2020-01-17 11:51:30.000
Measure_QS,OK,0,2020-01-17 11:51:06.000
Measure_QS,OK,0,2020-01-17 11:50:53.000
Measure_QS,OK,0,2020-01-17 11:50:41.000
Measure_QS,OK,0,2020-01-17 11:50:29.000
Measure_QS,OK,0,2020-01-17 11:50:17.000

おすすめ記事