0

我有一个具有这种格式的长文本文件:

024 AF Ethiopia text text text text etc
021 XX Germany  text text text text etc
083 AZ India    text text text text etc
...
etc

我想要做的是使用另一个文本文件
检查上述文件的大陆代码:如果不将其更改为正确的代码,请检查大陆是否正确。

我有一个文本文件,所有国家/地区都具有这种格式(大陆国家):

AZ Afghanistan
EU Albania
AF Algeria
EU Andorra
AF Angola
AM Argentina
AZ Armenia
OC Australia
EU Austria
 ....
etc

这在 Vim 中可行吗?

4

1 回答 1

1

为了以可重复的方式和完全自动化的方式解决这个问题,我会编写一个小的Perl(或AWK)脚本,因为这些专用语言比 Vimscript 更适合(尽管在那里也有可能!)

但是,对于一个快速的一次性操作,我会组装一个匹配所有不匹配行的搜索模式,如下所示:

/^\%(.*\<\%(<C-r>=join(readfile('database.txt'),'\|')<CR>\)\>\)\@!.*$<CR>

这会读入database.txt文件并创建每行一个分支的正则表达式,匹配整个单词\<...\>,并使用\@!仅匹配不包含读入分支之一的行。之后,所有错误的行都应突出显示,您可以使用n它们来查看并更正它们(手动,尽管您可以:help i_CTRL-X_CTRL-T在此处使用词库完成 ( ))。

于 2013-03-04T12:06:43.237 回答