bra*_*ass -1 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 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%
Run Code Online (Sandbox Code Playgroud)
我想删除所有不以2-5字符,所有大写字母标识符开头的行.
在grep的命令行中,它只向我显示那些行而不是"垃圾行"(前面四个例子中的前四行).即我想要的结果.$ 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%
Run Code Online (Sandbox Code Playgroud)
在vim中,使用相同的正则表达式,它找不到它,即使我删除行标记的开头:
:%s/^[A-Z0-9][A-Z0-9]+
%s/E486: Pattern not found: [A-Z0-9][A-Z0-9]+
Run Code Online (Sandbox Code Playgroud)
当我尝试删除数字时,我得到同样的错误:
E486: Pattern not found: [A-Z][A-Z]+
Run Code Online (Sandbox Code Playgroud)
我的目标是在获得vim以找到正则表达式后将%s //更改为%g // d.
在Debian Jessie上使用vim,grep来自同样的.
Vim是默认安装,我不确定是否有需要设置的标志,其他搜索过去不是问题.
在vim中+必须进行转义,因此您可以使用以下命令保留指定的行:
:%g!/^[A-Z0-9][A-Z0-9]\+/d
Run Code Online (Sandbox Code Playgroud)
如果您只想匹配以2到5个字符序列开头的行,您可以使用:
:%g!/^[A-Z0-9]\{2,5\}/d
Run Code Online (Sandbox Code Playgroud)