我想在vi编辑器中看到first 5 lines after the match found
。命令是什么?
我只知道这些命令
/Incident Id:
从头到尾提供所有行
:g/Incident ID:
仅提供隐藏所有不匹配的匹配字
但是如何在找到匹配词之后显示前5行...?
示例:
我有8行文字,&我搜索事件ID
Incident ID: 1392875740716 <<<Match word here
URL: /Project/jsps/ErrorPage.jsp
java.lang.NullPointerException
at java.util.Calendar.setTime(Calendar.java:1092)
at com.cando.restaurant.utils.DateRange.createForWeek(DateRange.java:54)
at org.springframework.transaction.interceptor.TransactionInterceptor :110)
at org.springframework.aop.framework.ReflectiveMethodInvocation
at org.springframework.aop.interceptor.ExposeInvocationInterceptor
预期输出
Incident ID: 1392875740716 <<<Match word here
URL: /Project/jsps/ErrorPage.jsp
java.lang.NullPointerException
at java.util.Calendar.setTime(Calendar.java:1092)
at com.cando.restaurant.utils.DateRange.createForWeek(DateRange.java:54)
答案 0 :(得分:8)
试试这个
:g/Incident ID/#5
另请参阅:help :g
,:help :p
和:help :z
(如果您有vim
,而不是vi
)。
答案 1 :(得分:2)
我不确定你的意思是“匹配后只有前5行”,因为vi会显示整个文件。
如果您只想看到此输出,可以使用grep而不是vi
$ grep -A 5 'Incident Id:' <your input file>
答案 2 :(得分:0)
虽然它不是特定的vim命令,但您可以在vim编辑器的任何文件上尝试它。 Vim还允许您直接从编辑器执行命令,而无需通过使用bang(!)后跟要运行的命令来删除shell。所以:
:!grep -A 5 "Incident ID" filename.txt
来自grep man pages:
-A NUM, - after-context = NUM 匹配行后打印NUM行尾随上下文。放置一行包含 - 在连续的组之间 匹配。
-B NUM, - before-context = NUM 在匹配行之前打印NUM行前导上下文。放置一行包含 - 在连续的组之间 匹配。