其他命令 · 2022年2月8日

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;’ 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;