我试图通过我的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,以上所有的组合,什么都没有诀窍。我的文件名中没有任何特殊字符,它们只是简单的名字。没有变量或其他任何东西。
如果你能帮助我一点,我将不胜感激:)
谢谢!
答案 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脚本的复杂程度,你可能会考虑用一种语言或另一种语言来完成整个事情。