Need help in splitting the string to diff rows

Hi,

I have file with values as below

1~ab~456~ac:bd:de:ef~yyyy-mm-dd
2~cd~458~af:fg:ty:er:ty:uj:io:~yyyy-mm-dd

I want the o/p as for frist row

1~ab~456~ac~yyyy-mm-dd
1~ab~456~bd~yyyy-mm-dd
1~ab~456~de~yyyy-mm-dd
1~ab~456~ef~yyyy-mm-dd

and for the second row

2~cd~458~af~yyyy-mm-dd
2~cd~458~fg~yyyy-mm-dd
2~cd~458~ty~yyyy-mm-dd

and so on...

So i want split the colon seperated values in rows along with other couln values..

Please help

$ cat file
1~ab~456~ac:bd:de:ef~yyyy-mm-dd
2~cd~458~af:fg:ty:er:ty:uj:io~yyyy-mm-dd
$ awk '{n = split ($4, a, ":"); for (i = 1; i <= n; i++) { print $1, $2, $3, a, $5} }' FS='~' OFS='~' file
1~ab~456~ac~yyyy-mm-dd
1~ab~456~bd~yyyy-mm-dd
1~ab~456~de~yyyy-mm-dd
1~ab~456~ef~yyyy-mm-dd
2~cd~458~af~yyyy-mm-dd
2~cd~458~fg~yyyy-mm-dd
2~cd~458~ty~yyyy-mm-dd
2~cd~458~er~yyyy-mm-dd
2~cd~458~ty~yyyy-mm-dd
2~cd~458~uj~yyyy-mm-dd
2~cd~458~io~yyyy-mm-dd

Thanks a ton!!!! It worked like magic...

You're very welcome.

Have shortened a bit.

Cheers!
-R

1 Like