标签: grep

如何使用“grep”命令查找包含子目录的文本

我想查找包含特定文本字符串的所有文件。该grep命令有效,但我不知道如何对每个目录使用它(我只能对当前目录执行此操作)。我尝试阅读man grep,但没有产生任何帮助。

command-line grep

441
推荐指数
6
解决办法
151万
查看次数

如何在不使用文字制表符的情况下 grep 制表符,为什么 \t 不起作用?

当我使用 (e)grep 在文件中搜索选项卡时,我使用了文字选项卡 ( ^v + <tab>)。我不能\t用作正则表达式中选项卡的替代品。使用例如 sed 这个表达式非常有效。

那么是否有可能使用非文字替代品<tab>以及非工作/未解释的背景是什么\t

bash regex grep posix-compliant

180
推荐指数
2
解决办法
17万
查看次数

如何使用特定字符串递归搜索目录名称,其中该字符串只是目录名称的一部分

如何使用特定字符串递归搜索目录名称,其中该字符串只是目录名称的一部分?

例如:目录名称为“8.0.3-99966_en”,但我想递归搜索带有字符串“99966”的目录。

grep

108
推荐指数
3
解决办法
30万
查看次数

如何在grep中只获取数字?

我有这样的文件:

 other lines . . .    
 blah blah blah (:34)
Run Code Online (Sandbox Code Playgroud)

我想在上面的文件中找到数字的出现。我想出了:

grep [0-9] filename
Run Code Online (Sandbox Code Playgroud)

但这正在打印整个:

blah blah blah (:34)
Run Code Online (Sandbox Code Playgroud)

而是我只想要34. 有什么办法吗?

command-line bash grep text-processing

81
推荐指数
4
解决办法
30万
查看次数

Grep,忽略警告

我正在尝试查找特定包的安装目录。我有一个特定的关键字,我正在尝试使用它来查找特定文件。

在 grep 期间,我只想包含cpp 或 h文件类型。我不希望 grep 显示诸如Permission DeniedCould not find the Directory 之类的警告。我只是想让它显示匹配的文件,没有别的。请建议我该怎么做?

目前我正在使用

grep "My term" -ir --exclude-dir="\.svn" --include=*.{cpp,h} ./
Run Code Online (Sandbox Code Playgroud)

search grep

57
推荐指数
3
解决办法
6万
查看次数

如何查看使用 grep 过滤的输出?

我想看输出的变化

gsettings list-recursively|grep text-scal
Run Code Online (Sandbox Code Playgroud)

这是

org.gnome.desktop.interface text-scaling-factor 1.0  
com.canonical.Unity.Interface text-scale-factor 1.0
Run Code Online (Sandbox Code Playgroud)

但如果我试着用

watch gsettings list-recursively|grep text-scal
Run Code Online (Sandbox Code Playgroud)

我没有输出,因为管道似乎是问题所在。

我怎样才能看到变化?

command-line grep gsettings watch-command

53
推荐指数
1
解决办法
3万
查看次数

Grep 搜索一行中的两个单词

我一直在寻找一种方法来过滤包含“lemon”和“rice”两个词的行。我知道如何找到“柠檬”或“米饭”,但不知道如何找到这两个。它们不需要紧挨着另一个,只是同一行文本中的一个。

grep text-processing

53
推荐指数
5
解决办法
20万
查看次数

如何在目录中非递归地对所有文件使用grep?

我想在目录中的所有文件中搜索一串文本(而不是它的子目录;我知道该-r选项会这样做,但这不是我想要的)。

  1. 跑步

    grep "string" /path/to/dir
    
    Run Code Online (Sandbox Code Playgroud)

    应该能够做到这一点,我读过,但它给了我错误:

    grep: dir: 是一个目录

  2. 接下来,我尝试grep在多个文件上运行。

    grep "string" .bashrc .bash_aliases 完美地工作。

    grep "string" .bash* 也按预期工作。

    grep "string" * 给我的错误:

    grep: data: Is a directory
    grep: Desktop: Is a directory
    grep: Documents: Is a directory
    grep: Downloads: Is a directory
    ...
    
    Run Code Online (Sandbox Code Playgroud)

只打印错误,我没有得到匹配的行。我尝试使用该-s选项,但无济于事。

所以,我的问题:

  1. 为什么我不能grep像 (1) 那样在目录上使用,而我应该可以使用?我已经在互联网上的大量示例中看到了这一点。
    编辑:当我说“在目录上使用 grep”时,我的意思是“搜索该目录中不包括其子目录的所有文件”。我相信这就是 grep 将目录传递给它而不是文件时所做的。我不正确吗?

  2. 请给我一个关于grep解释(2)中命令行为的工作原理的解释。
    编辑:让我更具体。为什么使用通配符来指定要搜索的多个文件,.bash*而不是使用*,甚至不使用./*

  3. 如何使用 搜索目录(而不是其子目录)中的所有文件grep

grep

51
推荐指数
3
解决办法
19万
查看次数

如何grep n个数字组,但不超过n?

我正在学习 Linux,我遇到了一个我自己似乎无法解决的挑战。这里是:

grep 文件中的一行,其中包含连续 4 个但不超过 4 个数字。

我不知道如何解决这个问题。我可以在字符串中搜索特定数字,但不能搜索它们的数量。

command-line grep text-processing

42
推荐指数
2
解决办法
22万
查看次数

这个 [t]ricky 括号表达式在 grep 中是如何工作的?

我最近看到了这个单行:

$ ps -ef | grep [f]irefox 

thorsen   16730     1  1 Jun19 ?        00:27:27 /usr/lib/firefox/firefox ...
Run Code Online (Sandbox Code Playgroud)

因此,它似乎返回数据中带有“firefox”的进程列表,但忽略了 grep 进程本身,因此似乎大致相当于:

ps -ef |grep -v grep| grep firefox
Run Code Online (Sandbox Code Playgroud)

我无法理解它是如何工作的。我查看了 grep 和其他地方的手册页,但没有找到解释。

如果我运行,则使谜团更加复杂:

$ ps -ef | grep firefox  > data
$ grep [f]irefox data

thorsen   15820 28618  0 07:28 pts/1    00:00:00 grep --color=auto firefox
thorsen   16730     1  1 Jun19 ?        00:27:45 /usr/lib/firefox/firefox ....
Run Code Online (Sandbox Code Playgroud)

[t]rick 似乎停止工作了!

这里有人会知道发生了什么我敢肯定。

谢谢。

command-line bash grep

41
推荐指数
2
解决办法
3万
查看次数