CSVファイルの再構成

CSVファイルの再構成

変更するデータの例は次のとおりです。

John,,
bim,bam,boom
tim,tam,toom
lam,loom,lim
Mary,,
pam,pim,poom
dam,dim,doom*

私はこれを達成しようとしています。

John,bim,bam,boom
John,tim,tam,toom
John,lam,loom,lim
Mary,pam,pim,poom
Mary,dam,dim,doom

名前が行に単独で表示されると、次の名前が同じパターンで表示されるまで、その下のすべての行に対して新しい列になります。

awkや他のツールが役に立つかもしれません。しかし、少し恥ずかしいです。

条件を設定してみましたが(2列と3列が空であれば何かを行う)、今は少し複雑に見えます。

ベストアンサー1

あなたの思考は正しいです:

条件を設定してみます(2列と3列が空の場合は何かをしてください)

具体的には、

  • 2列と3列が空の場合は、1列の値を保存して続行します。
  • それ以外の場合は、保存した値を行に追加して印刷します(awkこれにはいくつかの方法があります)。

例えば

awk -F, '$2=="" && $3=="" {pfx=$1; next} {print pfx "," $0}' file.csv

または、より慣用的にFSフィールド区切り変数を使用します。

awk -F, '$2=="" && $3=="" {pfx=$1; next} {$0 = pfx FS $0; print}' file.csv

または(基本操作 - ルールがtrueと評価されるか、1- レコードを印刷するため)

awk -F, '$2=="" && $3=="" {pfx=$1; next} {$0 = pfx FS $0} 1' file.csv
John,bim,bam,boom
John,tim,tam,toom
John,lam,loom,lim
Mary,pam,pim,poom
Mary,dam,dim,doom

おすすめ記事