a2p命令从命令行或标准输入取得一个awk脚本文件,并且向标准输出产生一个相同功能的 perl 脚本文件。
可选的选项有:
-D<number>:设置调试标记。
-F<character>:告诉a2p,awk脚本总是带 -F 选项执行。
-n<fieldlist>:如果输入不分解为一个数组,你需要指定输入的各字段的名称。
-<number>:使得a2p总是假设输入包含那么多字段。
-o:告诉a2p使用旧的awk行为。当前唯一的区别是旧的awk总是有一个每行的循环,即使没有对每行的操作;新的awk不是这样。
实例
将awk脚本转换成perl脚本
[zhangy@BlackGhost ~]$ a2p abc.sh
#!/usr/bin/perl
eval ‘exec /usr/bin/perl -S 0{1+”$@”}’
if $running_under_some_shell;
# this emulates #! processing on NIH machines.
# (remove #! line above if indigestible)
eval ‘‘.1.’2;’ whileARGV[0] =~ /^([A-Za-z_0-9]+=)(.*)/ && shift;
# process any FOO=bar switches
$FS = ‘ ‘; # set field separator
$, = ‘ ‘; # set output field separator
$\ = “\n”; # set output record separator
$FS = h3′;
$ccount = 0;
while (<>) chomp; # strip record separator
(Fld1,Fld2) = split(FS,_, -1);
#printf(“%s%s,%s\n”,1,2)
)
@parts1 = split(/-/, $Fld1, -1
@parts2 = split(/-/, $Fld2, -1);
mysystr = sprintf(‘%4d%2d%2d %4d%2d%2d’,parts1[(1)-1], $parts1[(2)-1],
parts1[(3)-1],parts2[(1)-1], parts2[(2)-1],parts2[(3)-1]);
count += (s = ‘ ‘, mystr =~ s/s/0/g);
print $mystr;
}
print $cont / 2;