百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

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有表格编辑功能,为什么我还要弄一个,不是多此一举么。道理是对的,但是很多会员功能才更加强大,不是吗?我们学语言,一来可以练习编码熟练的,巩固知识点,更重要的是你熟悉开发,以后如果你想实现一...