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
RudiC
2
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