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;
评论(0)
暂无评论