Tente isso
$ awk -F, 'NR<2{split(gensub(/Citty/,"City","g",$0),a,FS)}NR==2{for(b=2;b<=NF;b+=2){c=c a[b]" "$b","}print gensub(/,$/,"",1,c)}NR>2{print gensub(/(^,|" *",)/,"","g",$0)}' inp
Product Name,City Location,Price Per Unit
banana,CA,5.7
apple,FL,2.3
$
O mesmo código é mais legível se dividido em algumas linhas:
$ awk -F, '
> NR<2{split(gensub(/Citty/,"City","g",$0),a,FS)}
> NR==2{for(b=2;b<=NF;b+=2){c=c a[b]" "$b","}print gensub(/,$/,"",1,c)}
> NR>2{print gensub(/(^,|" *",)/,"","g",$0)}' inp
Product Name,City Location,Price Per Unit
banana,CA,5.7
apple,FL,2.3
$
Se 1a linha, divida a linha em elementos de matriz dentro de um. Corrigir o erro de digitação Citty- > City.
Se a segunda linha, começando com a segunda coluna, imprima a coluna correspondente da primeira linha junto com essa coluna. Repita para cada coluna, indo em incrementos de 2 colunas. Remova o ,
.
Após a segunda linha, substitua qualquer% principal,
ou qualquer "<spaces>",
por uma string vazia e, em seguida, imprima o resultado.
Testado ok no GNU Awk 4.0.2