vim技巧:删除包含特定字符的行,删除重复行并重新排序
liuian 2025-04-30 18:03 48 浏览
下面介绍 vim 的一些使用技巧:
- 删除包含特定字符的行
- 删除重复行,并对所有内容重新排序
删除包含特定字符的行
在 vim 中,可以使用 :g/pattern/d 命令删除所有包含 pattern 模式的行。
例如,删除所有以大写字母 D 开头的行,可以执行 :g/^D/d 命令。这里的 ^ 表示匹配行首。
这里的 :g 是 :global 命令的缩写,用 :help :g 命令查看它的帮助说明。部分关键说明如下:
:[range]g[lobal]/{pattern}/[cmd]
Execute the Ex command [cmd] (default ":p") on the lines within [range] where {pattern} matches.
即,:global 命令对匹配特定模式的每一行都执行所给的命令,有效的命令是vim命令行支持的命令,也就是以冒号 ':' 开头的命令,但是输入的时候不需要提供冒号。所以,上面的 d 对应 :d 命令,表示删除一行。
使用 :help usr_10.txt 命令查看该用户手册,在 “10.4 The global command” 小节中对 :global 命令也有描述,可以参考。
删除重复行,并对所有内容重新排序
在 vim 中,可以执行 :sort u 命令删除重复行,只保留一行,并会对所有内容重新排序。
例如在文件中有如下的内容:
debug checkout release hello.c hello.c release hello.c debug
执行 :sort u 命令后,会变成下面的内容:
checkout debug hello.c release
可以看到,去掉了相同内容的重复行,只保留一行,所有行按照字母顺序升序排列。
在 sort 后面加上感叹号 '!' 会按照字母顺序降序排序,也就是逆序。例如 :sort! u 命令。
使用 :help :sort 命令查看该命令的帮助说明,部分关键内容说明如下:
:[range]sor[t][!] [i][u][r][n][x][o] [/{pattern}/]
Sort lines in [range]. When no range is given all lines are sorted.
With [!] the order is reversed.
With [u] only keep the first of a sequence of identical lines (ignoring case when [i] is used). Without this flag, a sequence of identical lines will be kept in their original order. Note that leading and trailing white space may cause lines to be different.
即,:sort 命令本身对文件行进行排序,默认不会去掉重复行,加上 u 参数来去掉重复行。
相关推荐
- 微软的Edit与Nano比较(edit和editor)
-
有人问起Edit与Nano有什么差异,这里做个对比,若有遗漏或不对的地方,望指正。微软推出的Edit与经典的Nano编辑器在定位上都是轻量级命令行文本工具,但设计理念、功能侧重和适用场景有一定...
- RELU是什么意思(relu是干什么的)
-
ReLU是一种常用的激活函数,全称为RectifiedLinearUnit,即修正线性单元。它是一种非线性函数,常用于神经网络中的隐藏层,用于增加模型的非线性表达能力。ReLU函数的定义如下:f(...
- 15年后 Perl 6发布 网友称:终于等到你
-
转眼,2015已经走到了尽头;千禧年已经走过了15年。今年的圣诞节,Perl6历经了多年的研发,终于正式发布(Perl5的发布时间是1994年)。拉里·沃尔(LarryWall)说:“对于Pe...
- Shell脚本编程入门:轻松掌握自动化利器
-
Shell脚本编程入门:轻松掌握自动化利器一、初识Shell脚本:你的自动化小助手Shell脚本就像一位不知疲倦的助手,能够帮你自动完成那些重复性的系统操作。想象一下,每天上班第一件事要检查服务器状态...
- linux 系统中正则表达式的使用(linux正则表达式命令)
-
正则表达式是通过正则表达式引擎(regularexpressionengine)实现的。在Linux中,有两种流行的正则表达式引擎:POSIX基础正则表达式(basicregularexpre...
- linux sed系列 附录:AlmaLinux特性适配说明
-
本系列所有实验均在AlmaLinux8.9(SapphireCaracal)及GNUsed4.5环境下验证通过。针对这一特定平台,有一些特性和注意事项值得强调,以确保您的实践顺利无阻...
- 新手必学:grep/awk/sed文本处理神器指南
-
今天咱们聊个所有技术人都躲不掉的“体力活”——文本处理。是不是经常遇到这些糟心事?服务器日志几千行,想找一条“ERROR”报错信息,手动翻到眼酸;配置文件改了10处,结果漏了一行,重启服务直接崩;想统...
- 一文搞懂awk、sed、grep和vi的正则表达式
-
若无特殊说明,说明awk、sed、grep、vi用法相同。sed与grep正则表达式用法相同,有些特殊元字符属于扩展正则(如:+?|(){})sed和grep需要加上\或加上-E选项。建议使用-E选项...
- linux sed系列 第四篇:sed工业实战——日志处理与数据清洗
-
“掌握了sed的编程能力后,我们如同装备精良的工匠,终于可以踏入真实的工业战场。本篇将聚焦sed在日志分析、数据合规化、多文件批处理等场景中的应用,看它如何在海量数据中游刃有余,展现文本处理的...
- linux sed系列 第二篇:sed进阶技巧——地址定位与正则表达式
-
“上一篇我们掌握了sed的基础替换,如同获得了第一把钥匙。现在,让我们更进一步,学习如何精准锁定目标行,如同拥有了导航地图,让每一次操作都直击要害!”地址定位的四种维度sed的强大,很大程度上源...
- linux sed系列 第五篇:sed性能大师——调优策略与最佳实践
-
“历经四篇的探索与实战,我们已能娴熟运用sed解决各类文本处理难题。现在,让我们迈向更高的境界,聚焦于生产环境中的效率与安全。本篇将深入剖析sed的性能调优策略,探讨最佳实践,助您在海量数据处...
- App开发者必会:如何用备忘录模式玩转大数据回退?
-
App开发者必会:如何用备忘录模式玩转大数据回退?一、前言:移动端场景下的数据快照难题在移动开发中,无论你是在做输入法、文本编辑器、白板、画布还是富文本应用,数据的“撤销/恢复”功能都是用户体验的关键...
- 2021,Swift的JSON-Model转换还有什么新花样
-
文章首发于微信公众号「GitHub精选」,欢迎大家关注。打开微信,使用“搜一搜”,搜索「GitHub精选」,即可关注。大家过年好,今天的文章来自于读者的投稿。以下是作者的简介:我叫明林清,是的姓...
- Python tkinter学习笔记(七):Notebook和Treeview
-
‘Pythontkinter’是Python自带的GUI工具包,非常适合开发小型的GUI应用。最近使用‘tkinter’开发了一些自己日常使用的小工具,效果不错,于是把开发过程中学习到的一些tkin...
- 如何用 Python实现简单的表格界面
-
Excel有表格编辑功能,为什么我还要弄一个,不是多此一举么。道理是对的,但是很多会员功能才更加强大,不是吗?我们学语言,一来可以练习编码熟练的,巩固知识点,更重要的是你熟悉开发,以后如果你想实现一...
- 一周热门
-
-
Python实现人事自动打卡,再也不会被批评
-
【验证码逆向专栏】vaptcha 手势验证码逆向分析
-
Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控
-
一个解决支持HTML/CSS/JS网页转PDF(高质量)的终极解决方案
-
再见Swagger UI 国人开源了一款超好用的 API 文档生成框架,真香
-
网页转成pdf文件的经验分享 网页转成pdf文件的经验分享怎么弄
-
C++ std::vector 简介
-
系统C盘清理:微信PC端文件清理,扩大C盘可用空间步骤
-
10款高性能NAS丨双十一必看,轻松搞定虚拟机、Docker、软路由
-
python使用fitz模块提取pdf中的图片
-
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- table.render (33)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)