Você está pensando nas linhas certas:
I try to make a condition (if columns 2 and 3 are empty, do something)
Especificamente,
- se as colunas 2 e 3 estiverem vazias, salve o valor da coluna 1 e continue
- caso contrário, coloque o valor salvo na linha e imprima-o (existem várias maneiras de fazer isso)%
Então, por exemplo
awk -F, '$2=="" && $3=="" {pfx=$1; next} {print pfx "," $0}' file.csv
ou mais usando a variável separadora de campo awk
awk -F, '$2=="" && $3=="" {pfx=$1; next} {$0 = pfx FS $0; print}' file.csv
ou (como a ação padrão - quando uma regra avalia true ou FS
- é imprimir o registro)
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