可変長CSVファイルから列を選択

可変長CSVファイルから列を選択

IDなど、各ファイルの各行に一意の列を共有する2つのCSVファイルがあります。このファイルにはタイトルがありません。 file_2 には、次の可変長列があります。

1,2,3
4,5,6,7,8

まず、 sort コマンドを使用してソートし、その列の結合を使用して、共通列に基づいて 2 つのフィールドを結合しました。これで、可変長列を含むCSVファイルが作成されました。

次の順序で列を選択したいと思います。

second column, first column, third column, {from 4th column onwards every 3rd column till end of row. e.g., 4,7,10...}

頑張ったawk -F "\"*,\"*",\"*" '{print $2 $1 $3}' joinedfile.csv

これら3つの列を得ることができます。しかし、残りはどうすべきかわかりません。私はPythonでこれを行う方法を知っています。 cutやawkなどのシェルコマンドでこれを行う方法を知りたいです。 awkのwhileループが役に立つと思いますが、どのように構築するのかわかりません。

ベストアンサー1

それは次のとおりです。

awk -F, '{
    # print first three columns
    printf("%s,%s,%s", $2,$1,$3);

    #for all other columns
    for ( i = 4; i < NF; i++ )
    {
        # if column number every third
        if ( ( i - 4 ) % 3 == 0) {
            printf(",%s", $i);
        }
    }
    #print newline
    print "";
}' your_file.csv

おすすめ記事