使用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上运行的解决方案。 有什么建议吗?
答案 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