【问题标题】:show first 5 lines after match pattern found in vi editor在 vi 编辑器中找到匹配模式后显示前 5 行
【发布时间】:2014-03-21 05:17:16
【问题描述】:

我想在 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)

【问题讨论】:

    标签: linux search vi


    【解决方案1】:

    我不确定您所说的“仅找到匹配后的前 5 行”是什么意思,因为 vi 将显示整个文件。

    如果你只想看到这个输出,你可以使用 grep 而不是 vi

    $ grep -A 5 'Incident Id:' <your input file>
    

    【讨论】:

    • 我试过了,但它只是移动到下一行而没有显示任何输出。您看到我在问题中向您展示的示例了吗?
    • 谢谢你,我明白了。但这会很有帮助,我也可以在 vi 编辑器中做同样的事情
    【解决方案2】:

    虽然它不是专门的 vim 命令,但您可以在 vim 编辑器中的任何文件上尝试它。 Vim 还允许您直接从编辑器执行命令,而无需拖放到 shell,方法是使用 bang (!) 后跟要运行的命令。所以:

    :!grep -A 5 "Incident ID" filename.txt

    来自 grep 手册页:

    -A NUM, --after-context=NUM 在匹配行之后打印 NUM 行尾随上下文。在连续的组之间放置一个包含 -- 的行 匹配。

    -B NUM, --before-context=NUM 在匹配行之前打印 NUM 行前导上下文。在连续的组之间放置一个包含 -- 的行 匹配。

    【讨论】:

    • 我认为你在那里使用了错误的命令。首先在普通模式下按:进入命令模式然后输入这个命令!grep -A 5 "Incident ID" filename.txt
    【解决方案3】:

    试试这个

    :g/Incident ID/#5
    

    另请参阅 :help :g:help :p:help :z(如果你有 vim,而不是 vi)。

    【讨论】:

      猜你喜欢
      • 2014-03-21
      • 1970-01-01
      • 2015-04-02
      • 2013-06-04
      • 2015-06-04
      • 2019-07-28
      • 1970-01-01
      • 1970-01-01
      • 2019-05-11
      相关资源
      最近更新 更多