grep PID and collect data ?

I have a file current.csv file

2011/05/06 11:12:20 |   16:guest   pid=014782 opened Boards 0, 1, 2, 3 
2011/05/06 12:23:13 |   16:guest   pid=014782 closed
2011/05/06 12:26:05 |   17:guest   pid=022383 opened Boards 0, 1, 2, 3 
2011/05/06 20:09:04 |   17:guest   pid=022383 closed
2011/05/06 20:21:59 |   18:guest   pid=031483 opened Boards 0, 1, 2, 3 
2011/05/09 09:53:47 |   18:guest   pid=031483 closed
2011/05/09 09:57:59 |   19:guest   pid=007257 opened Boards 0, 1, 2, 3 

How do i write ksh script to create newfile.csv BUT merge the same PID in one line ?

2011/05/06 11:12:20 |   16:guest   pid=014782 opened Boards 0, 1, 2, 3 |2011/05/06 12:23:13 |   16:guest   pid=014782 closed
2011/05/06 12:26:05 |   17:guest   pid=022383 opened Boards 0, 1, 2, 3| 2011/05/06 20:09:04 |   17:guest   pid=022383 closed
2011/05/06 20:21:59 |   18:guest   pid=031483 opened Boards 0, 1, 2, 3 | 2011/05/09 09:53:47 |   18:guest   pid=031483 closed
2011/05/09 09:57:59 |   19:guest   pid=007257 opened Boards 0, 1, 2, 3 ||

Thanks,

Try this

awk '{if($5 in x){print x[$5]"|"$0;delete x[$5]}else{x[$5]=$0}}END{for(i in x){print x}}' infile

regards,
Ahamed

Thanks, i will try it

awk '{printf $4==v?$0 ORS:$0 FS"|";v=$4}END{print""}'

I tried both case and had problem:
If a process never close and was kill or get loss somewhere then it will mess up the new list.
Like

2011/05/06 11:12:20 |   16:guest   pid=014782 opened Boards 0, 1, 2, 3 |2011/05/06 12:23:13 |   16:guest   pid=014782 closed
2011/05/06 12:26:05 |   17:guest   pid=022383 opened Boards 0, 1, 2, 3| 2011/05/06 20:09:04 |   17:guest   pid=022383 closed
2011/05/06 20:21:59 |   18:guest   pid=031483 opened Boards 0, 1, 2, 3 | 2011/05/09 09:53:47 |   18:guest   pid=031483 closed
2011/05/09 09:57:59 |   19:guest   pid=007257 opened Boards 0, 1, 2, 3 ||
2011/05/09 09:57:59 |   22:guest   pid=007457 opened Boards 0, 1, 2, 3
|2011/05/09 09:57:59 |   23:guest   pid=007277 opened Boards 0, 1, 2, 3

try:

 echo '2011/05/06 11:12:20 |   16:guest   pid=014782 opened Boards 0, 1, 2, 3
2011/05/06 12:23:13 |   16:guest   pid=014782 closed
2011/05/06 12:26:05 |   17:guest   pid=022383 opened Boards 0, 1, 2, 3
2011/05/06 20:09:04 |   17:guest   pid=022383 closed
2011/05/06 20:21:59 |   18:guest   pid=031483 opened Boards 0, 1, 2, 3
2011/05/09 09:53:47 |   18:guest   pid=031483 closed
2011/05/09 09:57:59 |   19:guest   pid=007257 opened Boards 0, 1, 2, 3
2011/05/09 09:57:59 |   22:guest   pid=007457 opened Boards 0, 1, 2, 3
2011/05/09 09:57:59 |   23:guest   pid=007277 opened Boards 0, 1, 2, 3' |awk '{a[NR]=$0}END{for(i=1;i<=NR;i++) if(a[i+1]~/closed$/) {print a" | "a[i+1];i=i+1} else {print a" | |"}}'
2011/05/06 11:12:20 |   16:guest   pid=014782 opened Boards 0, 1, 2, 3 | 2011/05/06 12:23:13 |   16:guest   pid=014782 closed
2011/05/06 12:26:05 |   17:guest   pid=022383 opened Boards 0, 1, 2, 3 | 2011/05/06 20:09:04 |   17:guest   pid=022383 closed
2011/05/06 20:21:59 |   18:guest   pid=031483 opened Boards 0, 1, 2, 3 | 2011/05/09 09:53:47 |   18:guest   pid=031483 closed
2011/05/09 09:57:59 |   19:guest   pid=007257 opened Boards 0, 1, 2, 3 | |
2011/05/09 09:57:59 |   22:guest   pid=007457 opened Boards 0, 1, 2, 3 | |
2011/05/09 09:57:59 |   23:guest   pid=007277 opened Boards 0, 1, 2, 3 | |