Regex 查找不带';t以“开始”<&引用;,行动

Regex 查找不带';t以“开始”<&引用;,行动,regex,vim,sed,Regex,Vim,Sed,我正在使用vim,并且有一个包含一些html的大文本文件。我正在为网络做准备,需要在尚未格式化的行中添加标记。以下是我的一个例子: Paragraph text one one line [... more ... ] Other paragraph text on the next line [... more ... ] <h1>html element thrown in on its own line</h1> More paragraph text [...

我正在使用vim,并且有一个包含一些html的大文本文件。我正在为网络做准备,需要在尚未格式化的行中添加

标记。以下是我的一个例子:

Paragraph text one one line [... more ... ]
Other paragraph text on the next line [... more ... ]  
<h1>html element thrown in on its own line</h1>
More paragraph text [... more ... ]  
<!-- some other element (always own line) -->
There is still more text!
段落文本一行[…更多…]
下一行的其他段落文本[…更多…]
在自己的行中抛出的html元素
更多段落文本[…更多…]
还有更多的文字!

我正在寻找一种方法来搜索不以
^([^以下是逻辑开头的行。浏览文件,检查
这应该可以:

:%s/^\s*[^<]\+$/<p>&<\/p>/g
:%s/^\s*[^
:%s/^[^另一种方法:

:v/^</normal I<p>^O$</p>

:v/^不允许点匹配换行是什么意思?对不起,我是vim的新手。我使用了
%s:^([^>].*)$:\1

:g
,它在每一行添加了段落标记(即使已经有标记)。几乎在那里…最后一个表达式中的尖括号指向错误的方向。
[^>]
应该是
抱歉,Nefrubyr是正确的。尖括号是错误的。我已经更正了这行。“不需要复杂的正则表达式”,您提供的解决方案需要启动外部工具?vim对shell来说也是一个外部工具。无论是awk、sed、vim、ed等,所有这些工具都对文件起作用!它们之间确实没有太大区别。即使是普通的旧shell也可以用于“编辑”还有文件。不,如果你这么说的话,我的解决方案不是从vim启动的。它们是从命令行运行的。OP说他正在运行vim。因此调用shell/bash stuff是external.OP也会添加一个sed标记,那么给出了什么?在他的情况下使用vim的缺点。他有一个大文件。不是说vim不能支持大文件,但是t如果他要编辑一个大文件,最好使用awk/sed而不是vim(在交互模式下)。另一个disadv,在vim中只做一次。将edit命令放在脚本中更好,以便下次使用。它必须从我没有的东西开始。我的正则表达式不处理空行。不会有

<p>$1</p>
s:^\([^<].*\)$:<p>\1</p>:g
#!/bin/bash
shopt -s extglob
while read -r line
do
    case "$line" in
        "<"*) echo $line ;;
        *) echo "<p>$line</p>";;
    esac   
done <"file"
$ awk '!/^</{$0="<p>"$0"</p>"}{print}' file
$ awk '!/^</{$0="<p>"$0"</p>"}1' file
<p>Paragraph text one one line [... more ... ]</p>
<p>Other paragraph text on the next line [... more ... ]  </p>
<h1>html element thrown in on its own line</h1>
<p>More paragraph text [... more ... ]  </p>
<!-- some other element (always own line) -->
<p>There is still more text!</p>
:%s/^\s*[^<]\+$/<p>&<\/p>/g
:%s/^[^<].*/<p>&<\/p>/
:v/^</s#.*#<p>&</p>#
:v/^</normal I<p>^O$</p>
:v/^</normal yss<p>