如何借助数据库文件检查条件?

时间:2013-03-04 09:20:23

标签: database vim

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

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吗?

1 个答案:

答案 0 :(得分:1)

要以可重复的方式解决这个问题并完全自动化,我会编写一个小的 Perl (或 AWK )脚本,因为这些特殊用途的语言比Vimscript(虽然它也有可能!)

然而,为了快速一次性动作,我会组装一个搜索模式,匹配所有不匹配的行,如下所示:

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

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