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]