3

我的 Linux grep 命令有问题,它不起作用!!!

我正在我的 Ubuntu 系统上尝试以下测试:

  1. 我创建了以下文件夹:/home/andrea/Scrivania/prova

  2. 在此文件夹中,我创建了一个名为 prova.txt 的 txt 文件,并在此文件中写入了字符串test并保存了它

  3. 在 shell 中,我首先访问了该文件夹/home/andrea/Scrivania/prova,因此我以以下方式启动了 grep 命令:

    ~/Scrivania/prova$ grep test
    

问题是光标继续不停地闪烁,找不到任何东西!为什么?问题是什么?

4

6 回答 6

9

您没有提供文件供 grep 命令扫描

grep "test" *

或用于递归

grep -r "test" *

于 2012-11-21T23:34:23.047 回答
4

因为如果没有给出文件,grep 会搜索标准输入。试试这个。

grep test *
于 2012-11-21T23:34:18.023 回答
1

您没有运行您正在寻找的命令。

grep test *test在当前目录中的所有文件中查找。

grep test prova.txttest专门找prova.txt

(字符串grep testgrep在中,直到 才会返回。)teststdinEOF

于 2012-11-21T23:36:42.257 回答
0

你需要向 grep 输入一些东西——你不能只调用 grep test 而没有任何其他参数,因为它实际上什么也没做。尝试grep test *

grep 的另一个用途是通过管道输入命令

例如,这是我的主目录:

drwx------+  3 oliver  staff    102 12 Nov 21:57 Desktop
drwx------+ 10 oliver  staff    340 17 Nov 18:34 Documents
drwx------+ 17 oliver  staff    578 20 Nov 18:57 Downloads
drwx------@ 12 oliver  staff    408 13 Nov 20:53 Dropbox
drwx------@ 52 oliver  staff   1768 11 Nov 12:05 Library
drwx------+  3 oliver  staff    102 12 Nov 21:57 Movies
drwx------+  5 oliver  staff    170 17 Nov 10:40 Music
drwx------+  3 oliver  staff    102 20 Nov 19:17 Pictures
drwxr-xr-x+  4 oliver  staff    136 12 Nov 21:57 Public

如果我跑

l | grep Do

我得到结果

drwx------+ 10 oliver  staff    340 17 Nov 18:34 Documents
drwx------+ 17 oliver  staff    578 20 Nov 18:57 Downloads

记得通过管道传递grep 命令

于 2012-11-21T23:35:02.547 回答
0

从 grep 手册页:

Grep 搜索命名的输入文件(或标准输入,如果没有文件被命名,或文件名 - 给出)包含与给定 PATTERN 匹配的行。

如果您不提供文件名供它使用,它将尝试从标准输入读取。

尝试grep test *

于 2012-11-21T23:35:05.667 回答
0

根据GNU Grep 3.0

一个名为的文件-代表标准输入。如果未指定输入,则 grep搜索工作目录(.如果给定指定递归的命令行选项);否则,grep 搜索标准输入。

所以对于 OP 的命令,没有任何额外的规范,grep尝试在标准输入中搜索,而标准输入实际上并没有提供。

如上所述,一种简单的方法是grep -r [pattern]指定递归-r在当前目录和子目录中搜索。

另请注意,通配符*仅包括文件,而不包括目录。如果使用,可能会显示提示提示:

grep: [directory_name]: 是一个目录

于 2017-11-27T07:43:48.033 回答