awk中printf华丽输出

awk中printf与perl、c、c++都一致,用的好的话可以使用非常简洁的代码完成相同的效果

比如现在的需求是需要把linux中的进程与其对应的PID号打印出来,我们可以对比一下perl与awk的区别。

 

perl

#!/usr/bin/perl
use strict;
use Shell;

my @process = ps("-ef");

for (@process){

        chomp;

        my ($a,$b,$c,$d,$e,$f,$g,$x) = split /\s+/,$_;


                printf"%-50s =>  %-20s\n",$x,$b;


}


awk

# ps -ef | awk '{printf ("%-50s =>  %-20s\n",$8,$2)}'

 


上述两段代码输出的效果相同

CMD                                                 =>  PID                 
init                                                =>  1                   
[migration/0]                                       =>  2                   
[ksoftirqd/0]                                       =>  3                   
[watchdog/0]                                        =>  4                   
[migration/1]                                       =>  5                   
[ksoftirqd/1]                                       =>  6                   
[watchdog/1]                                        =>  7                   
[events/0]                                          =>  8                   
[events/1]                                          =>  9                   
[khelper]                                           =>  10  

语言没有谁强谁弱,只是工作中让自己开心就好。

你可能感兴趣的:(Shell)