首页 > 其他分享 >vim系列-文本操作篇

vim系列-文本操作篇

时间:2024-08-30 10:14:29浏览次数:10  
标签:系列 删除 重复 vim 行号 sed let python 文本

基数行与偶数行分组

使用Vim的替换命令,可以轻松地将基数行和偶数行分组:

%s/\(^.*$\)\n\(^.*$\)/\1 \2/g

然后,删除所有的基数行:

%s/^.*$\n\(^.*$\)/\1/g

删除重复行

在Vim中删除重复行是一个常见的操作,以下是几种方法:

删除相邻重复行

:g/\(.\+\)$\n\1/d

删除不相邻重复行

使用排序命令删除不相邻的重复行:

:sort u

删除重复行,结果按照原顺序排列

为了保存原有顺序,首先给每行加上行号和1个{

:let i=1|g/^/s//\=i.'{'/|let i+=1

按照行号后面的内容排序:

:sort /^\d\{-}/

删除行号后面的内容相同的行保留后面的行:

:g/^\d\{-}\{.∗$\n\d\{-}\{1$/d

按照行号恢复顺序:

:sort n

删除空白行

删除文件中的空白行:

%g/^\s*$/d

添加序号

有多种方法可以为文本添加序号:

通过let变量

let i=1 | g/^/s//\=i.' '/ | let i=i+1

直接使用行号

:g/^/ s//\=line('.').' '

使用range()函数

:for i in range(1, 31)
:  call setline(i, i .' '. getline(i))
:endfor

利用Vim的编程支持

:python <<EOF
from vim import current
for i in range(len(current.buffer)):
current.buffer[i] = str(i+1) + ' ' + current.buffer[i]
EOF

外部命令

使用外部命令如findstr, sed, diff, perl, python等为文本添加序号:

:%!findstr /N "^"
:%!sed =|sed "N;s/\n/ /"
:%!diff --line-format=%dn%L % -
:%!perl -pe "print ++$a . ' '"
:%!python -c "import sys,fileinput as f;[sys.stdout.write(str(f.lineno())+a) for a in f.input()]"

查看文件行数、列数、字符数及所占字节大小

查看文件的行数、列数、字符数及所占字节大小:

g + <Ctrl-g>

标签:系列,删除,重复,vim,行号,sed,let,python,文本
From: https://www.cnblogs.com/qq347061329/p/18388123

相关文章

  • 【C/C++进阶】——文件操作之文本文件与二进制文件指针读写
    【文件】——操作文件目录一:文件的定义二:文件名三:文件类型3.1:二进制文件3.2:文本文件四:文件的打开与关闭4.1:文件指针4.2:文件的打开与关闭五:文件的顺序读写5.1:读写字符5.2:读写字符串5.3:读写格式化数据六:文件的随机读写6.1:fseek6.2:ftell6.3:rewind七:文件读取结......
  • 【愚公系列】《AIGC辅助软件开发》002-AI智能化编程助手:GitHub Copilot
    ......
  • 【愚公系列】《AIGC辅助软件开发》002-AI智能化编程助手:GitHub Copilot
    ......
  • 科普文:软件架构数据库系列之【MySQL存储引擎InnoDB】
    概叙科普文:软件架构数据库系列之【MySQL前世今生及其体系结构概叙】-CSDN博客前面我们梳理了MySQL体系结构,涉及到innodb的并未进行详细说明,故在此文中进行补充说明。为了更好的理解Innodb,这里还是和前面MySQL体系结构一文中一样,保持一样的结构。重复的章节就不再描述,重点描......
  • vimrc 配置,配色
    特点:1、创建代码的时候,自动加版权,作者,创建时间;2、代码保存的时候,自动修改LastModify;3、对于没有该模板开头的代码,不做任何的修改;4、vim打开,显示文件名,下划线的方式显示当前行;vimrc位置:~.vimrcifv:lang=~"utf8$"||v:lang=~"UTF-8$"setfileencodings=ucs-bom......
  • Linux 文本处理
    1.正则表达式        Linux正则表达式在文本处理和搜索过程中起着非常重要的作用。它可以用于匹配和查找符合特定模式的字符串,从而实现强大的文本处理功能。以下是一些常见的正则表达式作用:        1.匹配字符串:正则表达式可以根据指定的模式匹配字符串。......
  • Versal Prime 系列 VM2202 自适应 SoC平台,XCVM2202-1LSINSVH1369、XCVM2202-1MLINSVH1
    VersalPrime系列是一款高度集成、多核、异构计算平台,适用于数据中心网络、存储和有线通信等多种应用。它通过在优化了连接性的设备中实现低延迟的内联加速,为这些应用提供突破性的性能。VersalPrime系列VM2202自适应SoC相关型号:XCVM2202-1LSINSVH1369XCVM2202-2LSENSVH13......
  • AI 大模型在文本生成任务中的创新应用
    目录前言一、文本生成技术的最新进展1.1从规则到深度学习:文本生成技术的演变1.2大型语言模型的崛起:从GPT-3到GPT-41.3创新技术推动文本生成质量提升二、文本生成的创新应用案例分析2.1自动内容创作2.2智能对话系统2.3个性化内容推荐三、高质量文本生成的代......
  • 【待做】【网络协议系列+DNS安全】利用DNS隧道进行追踪和扫描
    一、什么是DNS隧道二、DNS隧道攻击典型步骤三、攻击者如何利用DNS隧道四、用于追踪的DNS隧道案例五、缓解措施原创二进制空间安全一、什么是DNS隧道DNS隧道是一种利用DNS协议进行数据传输的技术。在网络中,DNS通常用于将域名解析为对应的IP地址,但是它也可以被......
  • 【反钓鱼系列】防范新型网络攻击的10款热门工具/服务
    原创安全牛网络钓鱼攻击是指利用虚假身份和欺骗手段,通过网站、语音、短信、邮件、Wi-Fi等途径,诱导用户泄露用户名、密码、银行账户等个人敏感信息的一种网络攻击方式。随着人工智能变得越来越容易获得和先进,威胁行为者也正在利用这种技术改造传统的网络钓鱼攻击活动,并带来了以......