【发布时间】:2009-08-13 11:18:42
【问题描述】:
我通常使用 perl one liner 而不是 grep 来搜索文件。
例如以下打印所有包含 #include <stdio.h>
perl -ne "print if(/#include\s*[\"<]stdio.h/)" */*.[ch]
但我找不到打印包含这些行的文件名的方法。我尝试打印$ARGV[0],但无济于事。
那么,如何打印包含这些行的文件名?
【问题讨论】:
-
使用 grep。然后你的问题就会消失(grep -l)
-
@depesz 它只会消失,直到你需要做一些更复杂的事情。
-
撤回我的答案:$_ 被 shell 解释,而不是 perl,尽管有引号等。尝试 echo $_:var 包含最后一个命令的第二部分,这就是我回答的原因似乎正在按要求打印文件名。
-
depesz,我的 Windows 机器上没有 grep。但我确实有 perl;
标签: perl command-line