Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式在Grep中工作,但在vim中不工作_Regex_Linux_Vim_Grep - Fatal编程技术网

Regex 正则表达式在Grep中工作,但在vim中不工作

Regex 正则表达式在Grep中工作,但在vim中不工作,regex,linux,vim,grep,Regex,Linux,Vim,Grep,我有一个格式为problem.txt的文件: StarBonds ↯ | 356 Positions | Gain: H$59,834,200 (15.26%) Security Shares & Paid Current Today ▲ Value Gain / Loss ± AANDE 20,000 !|! H$26.35 H$29.84 H$0.08 H$596,800 H$69,800

我有一个格式为problem.txt的文件:

StarBonds

↯ | 356 Positions | Gain: H$59,834,200 (15.26%)
Security    Shares  &   Paid    Current     Today   ▲   Value   Gain / Loss     ±
AANDE   20,000  !|!     H$26.35     H$29.84     H$0.08      H$596,800   H$69,800    13%
ABASS   20,000  !|!     H$51.68     H$51.29     -H$0.27         H$1,025,800     -H$7,800    -0%
ABRAG   20,000  !|!     H$39.65     H$44.98     -H$0.13     ▼   H$899,600   H$106,600   13%
ABRES   20,000  !|!     H$49.62     H$45.26     -H$0.40         H$1,079,600     H$87,200    8%
我想删除所有不以2-5个字符开头的行,所有行都是大写字母标识符

在使用grep的命令行中,它只显示这些行,而不是上面示例顶部的前四行“垃圾行”。i、 我想要的结果。 $grep'^[A-Z0-9][A-Z0-9]+'problem.txt

AANDE   20,000  !|!     H$26.35     H$29.84     H$0.08      H$596,800   H$69,800    13%     
ABASS   20,000  !|!     H$51.68     H$51.29     -H$0.27         H$1,025,800     -H$7,800    -0%     
ABRAG   20,000  !|!     H$39.65     H$44.98     -H$0.13     ▼   H$899,600   H$106,600   13%     
ABRES   20,000  !|!     H$49.62     H$45.26     -H$0.40         H$1,079,600     H$87,200    8%
在vim中,使用相同的正则表达式,即使我删除行标记的开头,它也找不到它:

:%s/^[A-Z0-9][A-Z0-9]+
%s/E486: Pattern not found: [A-Z0-9][A-Z0-9]+  
当我尝试删除数字时,会出现相同的错误:

E486: Pattern not found: [A-Z][A-Z]+ 
目标是在我可以让vim找到正则表达式后,将%s//更改为%g//d

在Debian Jessie和grep身上使用vim

Vim是默认安装,我不确定是否有需要设置的标志,其他搜索在过去没有问题

vim+中的必须转义,因此可以使用以下命令保留指定的行:

:%g!/^[A-Z0-9][A-Z0-9]\+/d
如果您只希望匹配以2到5个字符序列开头的行,您可以改为使用:

:%g!/^[A-Z0-9]\{2,5\}/d

你必须在vim中逃离+,就像在\+。谢谢。我错过了vim中regex的魔法模式和越狱。