我在脚本中使用vim的ex模式来对文本文件执行vim正则表达式和替换。
ex $NAME <<EOEX
:%s/<.\{-}>//g
:%s/\[.\{-}\]//g
:%s/ / /g
:%s/^Contents$
:%s/^\d.*$
:%s/ (.\{1,4\})//g
:g/^$\n^$/d
:x
EOEX
我遇到了正则表达式:%s/ ([^)]\{-}[^\d0-\d1000].\{-})//g
(未显示)的问题。当我找到一个值大于1000的字符时,我用它来过滤掉括号及其内容。
当放入上面的ex命令时,这个表达式会删除所有括号和内容集,所以我不得不用以下方式调用它:
vim $NAME -c ':%s/ ([^)]\{-}[^\d0-\d1000].\{-})//g' -c ':wq'
工作正常。当有人使用-c选项给vim而不是ex模式的命令时,有没有人能够深入了解它的工作原理?
(旁边的问题:&lt;&lt;&#E; EOEX ...... EOEX&#39; 的语法是什么?我无法找到任何文档。 编辑:据我所知,&lt;&lt;&lt;&#E; EOEX ... EOEX&#39; 的使用是Here document和EOEX包装传递给ex $ NAME命令的字符串文字。就我而言,所识别的包装的名称(在我的例子中是EOEX)是任意的)