在比赛之前和之后grep 20个字符


15

我的问题是,比赛后我得到的信息太多

grep -RnisI --color=auto "pseudomonas" *

我只想在比赛前后获得20个字符或10个字。

什么是做这种事情的正确工具?


1
当抱怨太多信息时,您的选项集有些奇怪。你想一个线之后之前的比赛中显示(-A1-B1RESP),但它的太多了吗?您到底想在哪里裁剪输出?
Andreas Wiese 2014年

1
您能否给出示例输入和期望的输出?
拉梅什2014年

我更改了命令,我在Ubuntu 13.10中进行了测试,请告知它是否对您有用。我有一个grep选项和一个egrep选项
Eric

Answers:


24
cat file.txt | grep -o -P '.{0,20}string.{0,20}'

这应该为你做

更新:

如果您不喜欢猫,则可以将grep与文件一起用作参数:

grep -o -P '.{0,20}pseudomonas.{0,20}' FileName.html

另外,-P使用Perl Regex,手册页说这是实验性的,如果要避免使用该标志,则可以使用egrep代替:

grep -Eo '.{0,20}yourstring.{0,20}' yourtestfile.txt

您拥有多么丑陋的测试文件;)
Ouki 2014年

文件的其余部分实际上非常有用,这是Scheme中间多行注释的一部分,必须在不破坏我们的解析器的情况下将其排除在外,这只是尝试的好行。
埃里克

由于它是我的文件之一,设置为755,但是我可以看到cat对于HTML文件而言可能不是理想的选择,您可以尝试将文件名作为参数传递给grep,请参见我的编辑。
埃里克

我的意思是说,通过777个文件,您可以拥有777个不同文件的副本,而不是chown的东西。我运行$$$ egrep -o'。{0,20} pseudomonas。{0,20}'* $$$。该命令将保持无限状态,并且不执行任何操作。然后,这似乎再次起作用$$$$ egrep -ori'。{0,20} pseudomonas。{0,20}'* $$$。递归和不区分大小写的情况相同。但是,它非常慢。我认为不应该那么慢。Grep的速度相当快。
莱奥波德·赫兹(LéoLéopoldHertz)2014年

如果catting不工作,你永远可以把它放到一个文件中加入> results.txt你的命令结束,但它不会告诉你,你发现它在哪个文件。
埃里克·

4
pcregrep -MnirIso '(?s).{0,20}pseudomonas.{0,20}' . |
  grep --color -e '^' -e pseudomonas

假设匹配项及其上下文不重叠且文件名不包含pseudomonas

还要注意,报告的行号是上下文开头的行号。

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.