云网牛站
所在位置:首页 > Linux常用命令大全 > 更多实用命令 > a2p命令

a2p命令

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;

相关命令