【发布时间】:2014-10-06 14:54:22
【问题描述】:
我正在尝试为变量分配一个包含通配符的文件路径,然后在 grep 命令中使用该变量。不幸的是,当我运行它时,没有看到通配符。我尝试使用 .* 代替,甚至作为正则表达式,但都没有奏效。任何帮助将不胜感激。
我正在寻找以 ftp_log 开头的所有文件,所以在命令行上它会是:
grep ftpd ftp_log.* | sed 's/\*//g' > <searchfile>`
但似乎无法将其翻译为在 perl 中工作。
$filename = "\/sysadm\/shared\/NCC\/logs\/" . $SYSTEM . "\/ftp_log.*";
`grep ftpd $filename | sed 's/\*//g' > $searchfile`;
grep: /sysadm/shared/NCC/logs/sslmlvfp1/ftp_log.: 没有这样的文件或目录
谢谢。
【问题讨论】:
-
你到底为什么要从 Perl 程序中掏出
grep或sed? -
因为它可以完成工作。我还在学习语言...
-
如果您使用 Perl (
grep ftpd /sysadm/shared/NCC/logs/sslmvfp1/ftp_log.*) 输出的完整路径以交互方式运行grep,是否可行?看起来您只是路径名错误。 (此外,您的输出消息与您的代码不匹配 - 它缺少*。检查您的复制/粘贴。) -
我认为我遇到的问题是由于某种原因通配符 * 没有被发送,这正是我在屏幕上看到的方式,我没有遗漏任何副本/粘贴。