【发布时间】:2016-12-30 12:18:15
【问题描述】:
我需要通过第二个文件 (OEMDS.txt) 的内容过滤一个文件 (javasrc.txt) 的内容。这需要在 Windows 环境中完成。我不知道 Windows 批处理文件,我知道 UNIX 命令,我是 Perl 的新手,我想让我的生活尽可能简单,所以我想写一个 UNIX 命令,输入“system()”围绕它,它应该可以工作。
不幸的是它似乎没有那么简单:以下 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{}
结果总是一样的:Perl 似乎有终止字符的问题(第二个反引号或逗号,...)
现在想来,我是这样启动的(不知道是否相关):
perl filter_by_file_content.pl
有人知道我能做什么吗?
【问题讨论】:
-
运行 cygwin 然后(大多数)CLI unix 命令将按预期工作
-
@MarcB 或者只使用本机 Perl 命令,因为它们可以轻松完成与
cat和grep相同的工作。 -
与您的问题无关,但在您的命令中使用
cat完全没有必要:grep -vf OEMDS.txt javasrc.txt > javasrc_temp.txt(我假设 OEMDS.txt 包含一行) -
OEMDS.txt中有什么内容? -
我质疑你为什么期望像 cat 和 grep 这样的“unix”命令存在于 Windows 机器上。
标签: windows perl batch-file unix