Questions tagged «grep»

对于与grep有关的问题,这是一种用于搜索文件中文本模式的命令行工具。对于有关grep本身的问题或因使用grep命令行工具引起的问题,请使用此标签。

4
文件中的grep单词,然后复制文件
我有一组文件(* .zip,*。txt,*。tar.gz,*。doc,... etc)。这些文件位于路径中。我想查找所有文件(* .txt),然后仅复制包含特定单词的文本文件(例如LINUX / UNIX)。 我执行以下操作: find . -name "*.txt" | grep 'LINUX/UNIX' 该命令能够找到所有文本文件,然后“ grep”通过仅列出包含“ LINUX / UNIX”的文本文件来过滤生成的文本文件。 如何将这些最终文件(即包含“ LINUX / UNIX”的文本文件)复制到特定的选择路径? 我试图申请 xargs find . -name "*.txt" | grep 'LINUX/UNIX' | xargs cp <to a path> 但这没用

2
如何在grep中使用多行作为组分隔符?
在中,grep您可以用来--group-separator在小组比赛之间写一些东西。 这很容易弄清楚我们有哪些块,尤其是在使用-C Xoption获取上下文行时。 $ cat a hello this is me and this is something else hello hello bye i am done $ grep -C1 --group-separator="+++++++++" 'hello' a hello this is me +++++++++ something else hello hello bye 我在grep中使用空行作为上下文“ group-separator”来学习grep的方法,就是说只有一个空行--group-separator=""。 但是,如果我想有两个空行怎么办?我试着说,--group-separator="\n\n"但我得到字面值\ns: $ grep -C1 --group-separator="\n\n" 'hello' a hello this is me …
9 shell  grep  quoting 

7
grep跳过文件的n行,仅在之后搜索
我有一个很大的日志文件,想grep第一次出现某个模式,然后在出现这种情况后立即找到另一个模式。 例如: 123 XXY 214 ABC 182 558 ABC 856 ABC 在我的示例中,我想查找182然后找到下一个出现的ABC 第一次出现很简单: grep -n -m1 "182" /var/log/file 输出: 5:182 我如何找到下一次出现的ABC? 我的想法是根据行号182 告诉grep跳过第一n行(在上面的示例中n=5)。但是我该怎么做?
9 grep 

1
使用grep的无效反向引用
因此,我试图找到6个字母的单词,这些单词由一个字符重复3次,然后再由另一个字符重复3次组成。例如aaabbb或oookkk。 我在尝试: grep -E "[a-z]\1{3}\S[a-z]\1{3}" filename 首先,正则表达式正确吗?第二,我为什么要得到grep: Invalid back reference?


2
grep仅子目录匹配模式
我有一个包含数千个子目录的目录树,但是我经常只需要grep这些目录的一小部分。如何grep仅将那些与模式匹配的子目录? 例如,假设我有一些要在其中进行grep的子目录: ... ... ... /foo /fooLib /fooHandler /fooGizmo ... ... ... 在...上述条目代表的成千上万的其他目录,我的不希望到grep英寸 假设我正在寻找的所有实例bar,如果这样做的话: grep -n --recursive bar * 我会在所有目录中找到所需的内容。如何仅在与模式匹配的子目录中搜索foo*?
9 grep 

3
用于搜索docx文件的命令行工具
是否有命令行工具可对docx文件进行文本搜索?我试过了grep,但是即使它与txt和xml文件都可以正常工作,但它不适用于docx。我可以先将docx转换为txt,但是我更喜欢直接在docx文件上运行的工具。我需要该工具才能在Cygwin下工作。 OP编辑:后来我发现,实现grep的最简单方法实际上是将这些docx转换为txt,然后通过grep对其进行转换。

2
反向grep获取文件中的最后几个匹配项
假设在/var/log/syslog.log查看grep手册时,我想抓住cron的最后5条信息,看来我无法让grep反向搜索。但是,我可以抓住最近发生的事情。 grep cron -m 5 /var/log/syslog 我可以使用反向grep命令吗?:)
9 grep 

2
grep比赛中的字符
我正在寻找一个巨大的数据库转储中的查找和替换对象,并且它没有做我认为应该发生的事情。我想在文件中grep输入目标字符串,然后查看周围的8个字符左右(我可能需要调整该数字,具体取决于)。我怎样才能做到这一点? 我之所以不能打交道,是因为有数百场比赛,甚至数千场比赛。我想获得一些围绕字符串的字符,然后将其通过管道uniq传递到或某种东西中,以查看为什么我的查找和替换有意外行为。 另外,同一行上可以有多个匹配项!

7
在冒号之前获取内容
我在Linux上有一个文本文件,其内容如下: help.helloworld.com:latest.world.com dev.helloworld.com:latest.world.com 我想在冒号之前获取内容,如下所示: help.helloworld.com dev.helloworld.com 我该如何在终端机中做到这一点?

3
为什么我不能以这种方式grep?
我想将“ disable = yes”行更改为“ disable = no”到以下文件中: [root@centos2 ~]# cat /etc/xinetd.d/tftp service tftp { ... server_args = -s /var/lib/tftpboot disable = yes per_source = 11 ... } 我尝试了这个: [root@centos2 ~]# grep 'disable = yes' /etc/xinetd.d/tftp [root@centos2 ~]# 只需用鼠标复制空间,但不会复制任何内容... 为什么以及如何知道“ disable”和“ =”之间的元素是什么?是几个空格吗?表格? 我知道我可以使用以下正则表达式进行grep: [root@centos2 xinetd.d]# grep -E 'disable.+= yes' /etc/xinetd.d/tftp disable …
8 sed  grep 

3
优化GNU grep
我正在使用grep -E带有PATTERN文件的egrep()。(-f path/to/file)。 这是在文本流的无限循环中完成的。这意味着我无法立即累积所有输入并将其传递给grep(如*.log)。 有没有一种方法可以使grep从PATTERN文件中“保存”正在构建的NFA,以便下次运行? 我已经搜索过Google并没有运气地阅读文档。 我会尝试多解释一下。我需要使用正则表达式找到固定数量的字符串(这不是问题的一部分,但可以提出其他建议),例如IP地址,域等。搜索是在Internet的feed上完成的。您可以将其视为文本流。grep由于它是流,因此无法使用所有输入。我可以累积大量流并grep在其上使用(因此不在grep每行上使用),但这也很有限(比如说30秒钟)。 我知道grep正在根据其所有模式(从文件中)构建NFA。因此,我的问题是:grep由于它不会改变,我可以告诉它保存该NFA以便下次运行吗?这样可以节省我每次构建NFA的时间。
8 grep 

2
从发现到grep
我想做什么? 编写一个命令,查找我项目中任何其他文件都不需要的文件。 我尝试了什么? 我find用来获取文件名列表。现在,我想使用文件名作为搜索字符串(而不是要搜索的文件)。 我find server/lib -type f -exec basename {} \; | cut -f 1 -d '.'用来获取文件名列表并剥离文件扩展名。 现在,我知道这grep -R --exclude-dir=node_modules <search-string> . -l是我想将每个文件名传递到的内容,但是我不知道如何将它们作为<search-string>参数传递。 其他资讯 我也隐约地意识到,对此的管道grep传递可能会通过find(整个文件列表)如果我要这么做的话,我显然不想这样做,然后告诉我。 另外,(尽管这可能不在此问题的范围之内),因为我将其用作查找任何grep无法为其找到任何文件名的文件名的方法,对于获得这种输出的任何建议将不胜感激 > <the-command> filename1 server/lib/foo.js # where these are the list of files in which it appears test/lib/foo.js filename2 Not Found! #where `filename2` wasn't …

6
将一列中的所有值替换为1
我有多个包含12行和3列的文本文件。 例: 2 6 0.74 42 6 0.58 80 6 0 112 6 0.24 132 6 1 216 6 0.7 342 6 0 390 6 0.21 432 6 0.56 466 6 0.75 524 6 0.6 646 6 0.9 我想在所有行中将第三列的所有值设置为1。 输出应如下所示: 2 6 1 42 6 1 80 6 1 112 …


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.