異なる列にカンマ区切り値を持つプロセステーブル

異なる列にカンマ区切り値を持つプロセステーブル

私は成功しなかったし、しばらく次のことを試しました。

私が受け取ったデータには、各個々の列にカンマ区切りの値があります。列 6 のコンマの前の最初の値は、常に列 7 のコンマの前の最初の値に関連付けられます。データを抽出し、次のように正しい順序でテーブルに入れたいと思います。

入力データ:

1 2 3 4 5 A1,A2 B1,B2
1 7 3 3 5 C1,C2,C3 D1,D2,D3
1 2 R 4 b E1,E2,E3,E4 G1,G2,G3,G4

出力データ:

1 2 3 4 5 A1 B1
1 2 3 4 5 A2 B2
1 7 3 3 5 C1 D1 
1 7 3 3 5 C2 D2
1 7 3 3 5 C3 D3
1 2 R 4 b E1 G1
1 2 R 4 b E2 G2
1 2 R 4 b E3 G3
1 2 R 4 b E4 G4

私はそれらをソートされた配列に入れる前に分離する必要があることを知っていますが\t、私はこれに完全に慣れておらず、膨大な量のデータを受け取ります。

ベストアンサー1

そしてawk

awk '{split($6,a,","); split($7,b,","); for(i in a){print $1,$2,$3,$4,$5,a[i],b[i]}}' file
  • awk入力スペースまたはタブで区切って読みます。デフォルト値:[\t ]+
  • split($6,a,",")6番目のフィールドを$6コンマで区切り、,出力を名前付き配列に保存しますa
  • split($7,b,",")$77番目のフィールドをカンマで区切り、,出力を名前付き配列に保存しますb
  • for(i in a)今度は配列を繰り返しますa...
    • print ...,a[i],b[i]...そして、その値をそのインデックスと共に両方の配列値$1に印刷します。$5a[i]b[i]i

出力:

1 2 3 4 5 A1 B1
1 2 3 4 5 A2 B2
1 7 3 3 5 C1 D1
1 7 3 3 5 C2 D2
1 7 3 3 5 C3 D3
1 2 R 4 b E1 G1
1 2 R 4 b E2 G2
1 2 R 4 b E3 G3
1 2 R 4 b E4 G4

おすすめ記事