How to append a string by comparing another string?

Hi ,
I have one file like

BUD,BDL BUDCAR
BUD,BDL BUDLAMP
ABC,CDF,KLT ABISKAR
ABC,CDF,KLT CORNEL
ABC,CDF,KLT KANNAD
JKL,HNM,KTY,KJY JAGAN
JKL,HNM,KTY,KJY HOUSE
JKL,HNM,KTY,KJY KATAK
JKL,HNM,KTY,KJY KOLKA

The o/p should be like

BUD,BDL BUDCAR,BUDLAMP
ABC,CDF,KLT ABISKAR,CORNEL,KANNAD
JKL,HNM,KTY,KJY JAGAN,HOUSE,KATAK,KOLKA
awk     ' {Ar[$1] = Ar[$1](Ar[$1]?",":"")$2}
         END {for (i in Ar) print i, Ar}
        ' file
BUD,BDL BUDCAR,BUDLAMP
JKL,HNM,KTY,KJY JAGAN,HOUSE,KATAK,KOLKA
ABC,CDF,KLT ABISKAR,CORNEL,KANNAD

As you're posting quite some similar questions, why not learn awk/sed/shell yourself?

1 Like

If sorted:

awk 'p!=$1{if(p)print s; s=$0; p=$1; next}{s=s "," $2} END{print s}' file
1 Like

Thanks..

Can you please replace the space with pipe(|) in the o/p file?

BUD,BDL|BUDCAR,BUDLAMP
ABC,CDF,KLT|ABISKAR,CORNEL,KANNAD
JKL,HNM,KTY,KJY|JAGAN,HOUSE,KATAK,KOLKA

Like so?

awk 'p!=$1{if(p)print s; s=$1 "|" $2; p=$1; next}{s=s "," $2} END{print s}' infile
1 Like