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;' while $ARGV[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;