【问题标题】:Deleting outside angle brackets in vim with grep? [duplicate]用grep删除vim中的外部尖括号? [复制]
【发布时间】:2013-09-18 10:04:16
【问题描述】:

我想知道是否有人可以建议如何删除尖括号或引号之外的文本。例如,下面我想删除所有不在尖括号内的句子。

<Let's get two bottles,> I said. The bottles came. I poured a little in my glass, then a glass for Brett, then filled my glass. We touched glasses.
<Want to go for a ride?> I said. <Want to ride through the town?>

我知道如何删除尖括号内的文字,但不知道如何删除。对于这个任务,我使用: sed 's/&lt;[^&lt;]*&gt;//g'我不知道我想做的事情是否可以建立在这个功能上。

【问题讨论】:

  • 欢迎来到 Stack Overflow。请尽快阅读About 页面。尖括号是否总是在同一条线上(打开和关闭),或者它们可以分成几行?如果某些内容在尖括号内,则在引号外,如果在引号内,则在尖括号外-因此按面值计算(“删除尖括号外或引号外的文本”),您只需要删除所有内容。将 'or' 更改为 'and',您就重新开始工作了:您是否考虑过单引号、双引号,以及 guillemets 呢?
  • 感谢您的回复,乔纳森。好吧,文本要么在尖括号之间(如上),要么在双引号之间,如下所示:“我的儿子”他用剃刀指着我“带着这张脸向西走,与国家一起成长”。因此,这实际上是一个“非此即彼”的选择。是的,句子可以分成几行。
  • 分割线——啊! (我不太愿意讨论英语中否定连词的细节。)

标签: regex vim sed grep


【解决方案1】:

如果你不介意插件,我的PatternsOnText plugin 提供了一个:DeleteExcept 命令。这样,即使您对括号和引号的初始要求也可以简洁地表达:

:DeleteExcept/<[^<]*>\|"[^"]*"/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 2011-10-05
    相关资源
    最近更新 更多