在Vim/Nvim中匹配仅含正整数行的正则表达式及删除方法
嘿,这个需求超简单的!不管你用Vim/Nvim还是命令行的awk/sed,都有现成的方法,完全不用怕正则复杂,我给你一步步讲清楚:
用Vim/Nvim直接处理
打开你的文件后,按:进入命令行模式,输入下面这条命令回车就行:
:%g/^\d\+$/d
简单解释下每个部分:
%表示作用于所有行g/.../d表示匹配到括号里内容的行就删除^\d\+$就是匹配仅包含正整数的行:^是行开头,\d\+代表一个或多个数字,$是行结尾,合起来就是整行只有数字的情况。
如果想更严谨(排除0,因为正整数从1开始),可以用:
:%g/^[1-9]\d*$/d
用awk命令处理
如果你习惯用命令行,awk一行就能搞定,直接输出过滤后的内容:
awk '!/^[1-9][0-9]*$/' 你的文件名.txt > 处理后的文件名.txt
这里!/.../表示不匹配这个模式的行才会被输出,^[1-9][0-9]*$就是严格的正整数(第一位是1-9,后面可以跟着任意数字或者没有),最后把结果重定向到新文件里。
用sed命令处理
sed也是个好选择,直接删除匹配的行:
# 先输出到终端预览效果 sed '/^[1-9][0-9]*$/d' 你的文件名.txt # 直接修改原文件(谨慎使用,建议先备份文件) # macOS系统需要加-i '' sed -i '' '/^[1-9][0-9]*$/d' 你的文件名.txt # Linux系统可以简化为 sed -i '/^[1-9][0-9]*$/d' 你的文件名.txt
同样,/^[1-9][0-9]*$/匹配仅正整数的行,d是删除操作。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

