我需要通过第二个文件(OEMDS.txt)的内容来过滤一个文件(javasrc.txt)的内容。这需要在Windows环境中完成。我不知道Windows批处理文件,我知道UNIX命令,我是Perl新手,我想让自己的生活尽可能简单,所以我想写一个UNIX命令,把“system()”围绕它,它应该工作。如何在Perl中使用UNIX命令? (用于Windows机器)
不幸的是,似乎没有那么简单:下面的Perl脚本,拒绝工作:
system("cat javasrc.txt | grep -v qx(cat OEMDS.txt) > javasrc_temp.txt");
我收到错误消息:
grep: OEMDS.txt): No such file or directory
为了您的信息:我已经使用了以下用于启动cat
命令:
- backticks
- $()
- qx()
- qx{}
Always th结果是一样的:Perl似乎有一个问题,终止字符(第二个反引号或逗号,...)
现在我想到了,我用下面的方式启动它(我不知道这是否是相关的):
perl filter_by_file_content.pl
有谁知道我能做些什么?
然后运行cygwin然后(大多数)CLI unix命令将按预期工作 –
@MarcB或者只是使用本机Perl命令,因为它们可以轻松地完成与'cat'和'grep'相同的工作。 – ThisSuitIsBlackNot
与你的问题无关,但是在你的命令中'cat'的使用是完全没有必要的:'grep -vf OEMDS.txt javasrc.txt> javasrc_temp.txt'(我假设是OEMDS。txt包含一行) – ThisSuitIsBlackNot