Questions tagged «grep»

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


14
如何防止'grep'出现在ps结果中?
当我搜索一些不存在的过程时,例如 $ ps aux | grep fnord wayne 15745 0.0 0.0 13580 928 pts/6 S+ 03:58 0:00 grep fnord 显然,我不在乎grep-与搜索ps过程一样有意义! 如何防止grep出现在结果中?
304 grep  ps 

8
grep只能输出匹配的指定分组吗?
说我有一个文件: # file: 'test.txt' foobar bash 1 bash foobar happy foobar 我只想知道“ foobar”之后出现的单词,因此可以使用此正则表达式: "foobar \(\w\+\)" 括号表示我对foobar之后的单词有特别的兴趣。但是当我执行a时grep "foobar \(\w\+\)" test.txt,我得到的行与整个正则表达式匹配,而不仅仅是“ foobar之后的单词”: foobar bash 1 foobar happy 我更希望该命令的输出如下所示: bash happy 有没有办法告诉grep仅在正则表达式中输出与分组(或特定分组)匹配的项目?


6
使用grep计算出现的总数
grep -c这对于查找字符串在文件中出现的次数很有用,但是每行仅对一次出现进行计数。如何计算每行多次出现? 我正在寻找比以下更优雅的东西: perl -e '$_ = <>; print scalar ( () = m/needle/g ), "\n"'
215 grep 

9
是什么使grep认为文件是二进制文件?
我的盒子上有一些Windows系统上的数据库转储。它们是文本文件。我正在使用cygwin通过它们进行grep。这些似乎是纯文本文件;我使用记事本和写字板等文本编辑器打开它们,它们看起来清晰易读。但是,当我对它们运行grep时,它会说binary file foo.txt matches。 我注意到文件中包含一些ascii NUL字符,我相信这是数据库转储中的工件。 那么,什么使grep认为这些文件是二进制文件?的NUL性格吗?文件系统上有标志吗?我需要更改什么才能让grep向我显示行匹配项?
185 grep 

6
如何通过.gz文件递归grep?
我正在使用脚本定期下载我的gmail邮件,该邮件将原始.eml压缩为.gz文件。该脚本每天创建一个文件夹,然后将每条消息压缩到其自己的文件中。 我想要一种在档案库中搜索“字符串”的方法。 仅Grep似乎无法做到这一点。我也尝试过SearchMonkey。


5
grep可以返回true / false还是有其他方法
作为此脚本的一部分,我需要能够检查给定的第一个参数是否与文件的第一个单词匹配。如果是这样,则退出并显示错误消息;如果没有,则将参数附加到文件中。我了解如何编写该if语句,但不了解如何grep在脚本中使用。我知道这grep看起来像这样 grep ^$1 schemas.txt 我觉得这应该比我做起来容易得多。 我在if语句中收到“参数过多”的错误。我摆脱了之间的空间grep -q,然后得到了预期的错误二进制运算符。 if [ grep -q ^$1 schemas.txt ] then echo "Schema already exists. Please try again" exit 1 else echo "$@" >> schemas.txt fi
130 grep 

11
说服grep输出所有行,而不仅仅是匹配的行
说我有以下文件: $ cat test test line 1 test line 2 line without the search word another line without it test line 3 with two test words test line 4 默认情况下,grep返回包含搜索词的每一行: $ grep test test test line 1 test line 2 test line 3 with two test words test line 4 …
121 grep  highlighting 

4
仅返回匹配模式后的行的一部分
因此,当我使用要处理的特定日志集时,仅cat使用拉开文件然后使用grep来获取匹配行就可以了。它需要一种将线与模式匹配的方法,但只需要在匹配后返回该线的一部分。比赛之前和之后的部分将不断变化。我使用过sed或awk,但无法弄清楚如何过滤线以删除比赛之前的部分,或者仅在比赛之后返回部分,这两种方法都可以使用。这是我需要过滤的一行示例: 2011-11-07T05:37:43-08:00 <0.4> isi-udb5-ash4-1(id1) /boot/kernel.amd64/kernel: [gmp_info.c:1758](pid 40370="kt: gmp-drive-updat")(tid=100872) new group: <15,1773>: { 1:0-25,27-34,37-38, 2:0-33,35-36, 3:0-35, 4:0-9,11-14,16-32,34-38, 5:0-35, 6:0-15,17-36, 7:0-16,18-36, 8:0-14,16-32,34-36, 9:0-10,12-36, 10-11:0-35, 12:0-5,7-30,32-35, 13-19:0-35, 20:0,2-35, down: 8:15, soft_failed: 1:27, 8:15, stalled: 12:6,31, 20:1 } 我需要的部分是“停顿”之后的所有内容。 其背后的背景是,我可以找出停顿的频率: cat messages | grep stalled | wc -l 我需要做的是找出某个节点已停顿了多少次(由“停顿”后每个冒号之前的部分指示。如果我只是为此而grep(即20 :),它可能会返回软失败的行,但是我只需要过滤停顿的部分,这样我就可以从停顿的那些节点中为特定节点进行grep。 出于所有目的和目的,这是一个具有标准GNU核心utils的freebsd系统,但是我无法安装任何额外的辅助工具。


7
是否有针对grep,awk和sed的基本教程?[关闭]
我已经有一段时间使用Linux了,并且对大多数常见的命令行实用程序都有相当不错的了解。然而,那些上来,再次相对于编程是grep,awk和sed。 关于我使用grep的唯一一件事就是将内容传送到其中以在日志文件中查找文件,psetc 的输出。我没有使用过awk或根本没有使用sed过。这些实用程序有什么好的教程吗?
95 grep  sed  awk 

2
为什么grep默认不忽略二进制文件?
的联机帮助页对标志进行了如下grep描述-I: -I Ignore binary files. This option is equivalent to --binary-file=without-match option. 它还说明了二进制文件: --binary-files=value Controls searching and printing of binary files. Options are binary, the default: search binary files but do not print them; without-match: do not search binary files; and text: treat all files as text. 我想不出要关心二进制文件中的匹配的情况。如果存在这种情况,那么肯定一定是例外而不是常规。为什么grep默认情况下不忽略二进制文件而不是要求设置此标志呢?
94 grep 

8
如何使用多个AND模式运行grep?
我想在模式之间使用隐式AND进行多模式匹配,即等效于在序列中运行多个抓取: grep pattern1 | grep pattern2 | ... 那么如何将其转换为类似的东西呢? grep pattern1 & pattern2 & pattern3 我想使用单个grep,因为我正在动态构建参数,因此所有内容都必须放在一个字符串中。使用filter是系统功能,而不是grep,因此不是它的参数。 请勿将此问题与以下内容混淆: grep "pattern1\|pattern2\|..." 这是一个OR多模式匹配。

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.