使用下面的示例日志文件:
1;000117;20190529;055529;9521;0988388019
1;000015;20190529;071944;2222;2231
1;000012;20190529;072734;4258;4252
1;000006;20190529;073336;2226;1000
3;000005;20190529;073715;1000;037760967
3;000004;20190529;073751;1000;037760967
我需要对最后一列用空格进行归一化,直到它们的长度= 25
尝试使用不成功的perl代码:
perl -F';' -lane '$F[5] = $F[5], sprintf "% 25d"; $" = ";"; print "@F"'
我需要以下输出:
1;000117;20190529;055529;9521;0988388019
1;000015;20190529;071944;2222;2231
1;000012;20190529;072734;4258;4252
1;000006;20190529;073336;2226;1000
3;000005;20190529;073715;1000;037760967
3;000004;20190529;073751;1000;037760967
答案 0 :(得分:3)
$ awk 'BEGIN{FS=OFS=";"} {$NF=sprintf("%-25s",$NF)}1' file
1;000117;20190529;055529;9521;0988388019
1;000015;20190529;071944;2222;2231
1;000012;20190529;072734;4258;4252
1;000006;20190529;073336;2226;1000
3;000005;20190529;073715;1000;037760967
3;000004;20190529;073751;1000;037760967
所以您可以看到空格:
$ awk 'BEGIN{FS=OFS=";"} {$NF=sprintf("%-25s",$NF)}1' file | tr ' ' '#'
1;000117;20190529;055529;9521;0988388019###############
1;000015;20190529;071944;2222;2231#####################
1;000012;20190529;072734;4258;4252#####################
1;000006;20190529;073336;2226;1000#####################
3;000005;20190529;073715;1000;037760967################
3;000004;20190529;073751;1000;037760967################
答案 1 :(得分:1)
您在正确的轨道上。更成功的Perl代码:
perl -F';' -lane '$F[5]=sprintf("%-25s",$F[5]);print join ";",@F'
perl -F';' -pane '$F[5]=sprintf("%-25s",$F[5]);$_=join ";",@F'
答案 2 :(得分:0)
这可能对您有用(GNU sed):
export declare class TekButtonModule {
}
如果最后一个字段的长度不超过25个字符,请添加一个空格,直到它为止。