perl调用外部命令(g)awk的方法

发布时间:2019-11-23编辑:脚本学堂
perl为行读取方式,有着强大的对行处理的能力,同样,通过内部命令和巧妙的编程技巧,其对列的处理能力同样不可小觑。

    perl为行读取方式,有着强大的对行处理的能力,同样,通过内部命令和巧妙的编程技巧,其对列的处理能力同样不可小觑。
    但是,linux系统的常用小工具awk天生对列操作友好,有时直接在perl中调用awk比写相应的perl脚本要方便有效的多。比如用system插入awk语句:
 

复制代码 代码如下:
system(gawk '{print $1}' $filename);

执行该l语句,你会发现这行会报错,提示你使用了read-only 的变量$1。
那么,如何处理两种生态系统下的冲突呢?
有一个简单的解决办法:
 

复制代码 代码如下:
my $i="$1";
system(gawk '{print $i}' $filename);

这样便解决了(g)awk的$1和perl的 内置变量$1的冲突的问题了。