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