如何使用命令grep与几行?

时间:2013-05-24 17:41:37

标签: regex bash shell grep solaris

使用shell脚本我正在寻找一种方法来使grep命令执行以下两个选项之一:

a)使用grep命令在文件中显示以下10行匹配项;即,命令grep "pattern" file.txt将导致文件的所有行都具有该模式:

patternrestoftheline

patternrestofanotherline

patternrestofanotherline

...

所以我正在寻找这个:

patternrestoftheline

following line

following line

...

until the tenth

patternrestofanotherline

following line

following line

...

until the tenth

b)使用grep命令显示两个模式中的所有行,就像它们是限制一样

patternA restoftheline

anotherline

anotherline

...

patternB restoftheline

我不知道另一个命令而不是grep是否是更好的选择。 我目前正在使用一个解决我的问题的循环但是逐行,所以对于非常大的文件需要花费太多时间。

我正在寻找在Solaris上运行的解决方案。 有什么建议吗?

2 个答案:

答案 0 :(得分:1)

如果情况(a),如果模式出现在10行内,你会发生什么?

无论如何,这里有一些awk脚本应该可以工作(但是没有经过测试;我没有Solaris):

# pattern plus 10 lines
awk 'n{--n;print}/PATTERN/{if(n==0)print;n=10}'

# between two patterns
awk '/PATTERN1/,/PATTERN2/{print}'

第二个也可以与sed

类似地完成

答案 1 :(得分:-1)

对于您的第一项任务,请使用-A的{​​{1}}(“之后”)选项:

grep

第二项任务是典型的grep -A 10 'pattern' file.txt 问题:

sed