我的一个常见做法是对某种类型的所有文件执行 grep,例如,找到所有包含“rumpus”一词的 HTML 文件。为此,我使用
find /path/to -name "*.html" | xargs grep -l "rumpus"
Run Code Online (Sandbox Code Playgroud)
有时,find会返回名称中带有空格的文件,例如my new file.html. 但是,当xargs将此传递给grep时,我收到以下错误:
grep: /path/to/bad/file/my: No such file or directory
grep: new: No such file or directory
grep: file.html: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我可以看到这里发生了什么:管道或xargs正在将空格视为文件之间的分隔符。但是,对于我的一生,我无法弄清楚如何防止这种行为。可以用find+完成xargs吗?还是我必须使用完全不同的命令?
我只需要从正则表达式中获取匹配项:
$ cat myfile.txt | SOMETHING_HERE "/(\w).+/"
Run Code Online (Sandbox Code Playgroud)
输出必须只是括号内匹配的内容。
不要认为我可以使用grep因为它匹配整行。
请让我知道如何做到这一点。
在 Linux 服务器上,我需要在当前目录和所有子目录中查找具有特定文件扩展名的所有文件。
以前,我一直使用以下命令:
find . -type f | grep -i *.php
Run Code Online (Sandbox Code Playgroud)
但是,它找不到隐藏文件,例如.myhiddenphpfile.php。下面找到隐藏的 php 文件,而不是非隐藏的文件:
find . -type f | grep -i \.*.php
Run Code Online (Sandbox Code Playgroud)
如何在同一命令中同时找到隐藏和非隐藏的 php 文件?
在尝试在文件中搜索简单模式“hello”时,以下所有形式的 grep 都有效:
是否存在上述形式之一有效但其他形式无效的特定情况。如果我用一个代替另一个有什么区别吗?
我见过几个人这样做的例子:
grep [f]oobar
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么这比
grep foobar
Run Code Online (Sandbox Code Playgroud) 我目前在一个目录中有 n 个数据文件,其中每个文件最多有 1 行很长的数据。我的目录结构是
director/
data1.json
data2.json
data3.json
Run Code Online (Sandbox Code Playgroud)
我知道这些文件中至少有一个包含我正在寻找的关键字,但是由于一行数据太长,它覆盖了我的整个终端。如何仅在执行关键字 grep 后获取文件名?我使用的 grep 命令是:
grep keyword *.json
Run Code Online (Sandbox Code Playgroud) 我想从中获取数字rating作为输出
# nc localhost 9571
language:
language:en_ZA.UTF-8
language:en_ZW.UTF-8
session-with-name:Ubuntu Classic (No effects):gnome-session --session=2d-gnome
session-with-name:Ubuntu (Safe Mode):gnome-session -f --session=2d-gnome
session-with-name:Ubuntu Classic:gnome-session --session=classic-gnome
xsession:/etc/X11/Xsession
rating:94
Run Code Online (Sandbox Code Playgroud)
我可以这样做
# nc localhost 9571 | grep rating | cut -d: -f2
94
Run Code Online (Sandbox Code Playgroud)
但可以awk用来代替更简单的解决方案吗?
是否存在一个神奇的 shell 管道,它可以轻松地对一堆 .gz 日志文件进行 grep,而无需将它们提取到某处?
.gz 文件是 Apache 日志,是日志轮换的结果。我想快速检查过去访问某些 URI 的频率。
当我想搜索 html 标签的一部分时,我厌倦了不得不逃避的事情。
我怎样才能准确搜索我输入的内容而不必转义?
例如
ack-grep 'console.log(foo'
Run Code Online (Sandbox Code Playgroud)
我得到:
Unmatched ( in regex; marked by <-- HERE in m/console.log( <-- HERE par/
Run Code Online (Sandbox Code Playgroud) 我有以下输出git status,我如何grep处理之后的所有内容Untracked files:
[alexus@wcmisdlin02 Test]$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: app/.gitignore
# new file: app/app.iml
# new file: app/build.gradle
# new file: app/proguard-rules.pro
# new file: app/src/androidTest/java/org/alexus/test/ApplicationTest.java
# new file: app/src/main/AndroidManifest.xml
# new file: app/src/main/java/org/alexus/test/MainActivity.java
# new file: app/src/main/res/layout/activity_main.xml
# new file: app/src/main/res/menu/menu_main.xml
# new file: app/src/main/res/mipmap-hdpi/ic_launcher.png
# new file: app/src/main/res/mipmap-mdpi/ic_launcher.png …Run Code Online (Sandbox Code Playgroud)