从perl调用awk脚本

时间:2015-07-30 17:41:13

标签: perl awk

我试图通过我的perl脚本使用awk脚本。因此,当我尝试从命令行调用awk脚本时,它可以正常工作,如下所示

awk -f script.awk file.txt

... awk脚本打开file.txt并进行一些计算。

然而,当我尝试通过我的perl脚本做同样的事情时,我无法使它工作:(我已经尝试了一百万件事,没有任何作用。你能帮忙吗?这就是我和我#39; m在perl脚本中使用:

`awk '-f /path/to/script.awk /path/to/target/file.txt'`;

...但是我得到了一个"没有这样的文件或目录"。我已经尝试过没有单引号,双引号,没有-f,我已经在script.awk中添加了#!/ bin / awk -f,以上所有的组合,什么都没有诀窍。我的文件名中没有任何特殊字符,它们只是简单的名字。没有变量或其他任何东西。

如果你能帮助我一点,我将不胜感激:)

谢谢!

1 个答案:

答案 0 :(得分:2)

您根本不需要任何报价:

other_table

你的尝试失败的原因是$ cat test.awk { print $1 } $ cat script.pl use strict; use warnings; print `awk -f test.awk file`; $ cat file first second third $ perl script.pl first 周围的引号意味着它被视为awk的单个参数。

另外,要明确的是,当您使用反引号在Perl中执行命令时,将返回该命令的输出,因此如果您希望显示该命令,则应使用'-f /path/to/script.awk /path/to/target/file.txt'

或者,您可以使用system代替反引号。语法为print,其中system PROGRAM LIST是要传递给LIST的参数列表(在本例中为awk)。例如:

PROGRAM

值得一提的是,根据你的awk脚本的复杂程度,你可能会考虑用一种语言或另一种语言来完成整个事情。