我正在尝试删除包含字母和带空格的字符之外的其他内容的行。数字,逗号,引号,数学符号:必须删除其中的任何一行。
输入:
FISIOLOGIA UMANA
FISIOLOGIA UMANA
http://id.loc.gov/vocabulary/subjectSchemes/FI
Sepúlveda, Luis
La sirenetta Walt Disney
La sirenetta
CFIV007842
CFIV006619
Lubac, Henri : de
Roma
预期输出:
FISIOLOGIA UMANA
FISIOLOGIA UMANA
La sirenetta Walt Disney
La sirenetta
Roma
到目前为止,我将:%g!:[A-Za-z]:d
与Vim
一起使用,应该可以解决问题。奇怪的是,它声明它匹配每行(如预期的那样),但是它不会删除发现非字母字符的行。这种行为背后的原因是什么?如何巧妙地解决这个问题?
答案 0 :(得分:5)
:%g!:[A-Za-z]:d
正在检查哪些行与字母表匹配,然后删除不匹配的行。由于每一行都匹配,因此不会删除任何行。
我认为搜索要删除的字符会更容易:
:g/[^a-zA-Z ]/d_
答案 1 :(得分:4)
您的正则表达式匹配所有行。您需要一个可以检查 entire 行上只有字符的字符:
:%g!:^[A-Za-z ]\+$:d
还请注意,由于您似乎也希望允许使用空格字符,因此我也添加了空格字符。