在linux环境下,用java、C或者shell去对齐下面的文件内容?

原文件如下:
22 | y 5 | 0 | 6000000402 | 1259111
CC | わあ?bos? | 0 | 6000000402 | 1259111

22 | d7 | 1 | 6000000402 | 1259111
CC | わあ?bos? | 1 | 6000000402 | 1259111

22 | d7 | 0 | 6000000402 | 1259111
CC | わあ?bos? | 0 | 6000000402 | 1259111
22 | d7 | 1 | 6000000402 | 1259111
CC | わあ?bos? | 1 | 6000000402 | 1259111
22 | d7 | 1 | 6000000402 | 1259111
20 | ?我鳥SkrChà | 1 | 6000000402 | 1259111
22 | d7 | 1 | 6000000402 | 1259111
CC | わあ?bos? | 1 | 6000000402 | 1259111
22 | d7 | 0 | 6000000402 | 1259111
CC | わあ?bos? | 0 | 6000000402 | 1259111

调整后,希望文件内容可以对齐

bash shell

gawk 'BEGIN{FS="|"} {printf "%4s | %-16s | %4s | %16s | %16s\n",$1, $2, $3 , $4, $5}' test.txt