別の行の最初の列の内容を分離する方法

別の行の最初の列の内容を分離する方法

私の入力データには、タブで区切られた5つの列があります。

Class1,Class2 info1 info2 info3 info4
Class3 info1a info2a info3a info4a
Class4,Class5 info1b info2b1,info2b2 info3b info4b

最初の列からコンマでデータを区切るときは、次のように2番目から5番目の列まで同じ情報を含む別の行に分割したいと思います。

Class1 info1 info2 info3 info4
Class2 info1 info2 info3 info4
Class3 info1a info2a info3a info4a
Class4 info1b info2b1,info2b2 info3b info4b
Class5 info1b info2b1,info2b2 info3b info4b

私は何をすべきかわかりません。どんな提案がありますか?

ベストアンサー1

アッ解決策:

awk '$1~/.+,.+/{ split($1,a,","); $1=""; sub(/^ */,"",$0); 
     for(i=1;i<=length(a);i++) print a[i],$0; next }1' file

出力:

Class1 info1 info2 info3 info4
Class2 info1 info2 info3 info4
Class3 info1a info2a info3a info4a
Class4 info1b info2b1,info2b2 info3b info4b
Class5 info1b info2b1,info2b2 info3b info4b

  • $1~/.+,.+/- 最初の列にカンマ区切りの項目が含まれている場合は行を処理します。
  • split($1,a,",")- 最初の列を項目配列に分割

おすすめ記事