You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vi编辑器中为重复路径批量添加不同前缀(万行文档适用)

高效处理Vi中单文档10000+行内容生成权限命令的方法

针对你要处理10000+行的重复路径、生成对应chown和chmod命令的需求,这里有两个实用又高效的方案,不管是直接在Vi内操作,还是结合外部工具都能快速搞定:

方案一:Vi原生正则替换(直接在编辑器内完成)

如果习惯在Vi里操作,直接用全局正则替换就能一步到位,完全不用跳出编辑器。

假设你的输入是像a a b b c c这样一行内的连续重复对,打开文件后按:进入命令模式,执行下面的替换命令:

:%s/\([^ ]\+\) \1/chown user:user \1\nchmod 755 \1/g

命令解释:

  • %:表示对整个文件的内容进行操作
  • \([^ ]\+\):捕获第一个路径([^ ]\+匹配除空格外的所有字符,比\w\+更适配带特殊字符的路径)
  • \1:匹配和捕获组完全相同的第二个重复路径
  • chown user:user \1\nchmod 755 \1:把每一对重复路径替换成两行对应的权限命令,\n用来换行
  • g:全局替换,确保文件里所有符合条件的重复对都被处理

如果你的内容是每行一个重复项(比如两行连续的a、两行连续的b),只要把正则里的空格换成换行符就行:

:%s/\([^ ]\+\)\n\1/chown user:user \1\nchmod 755 \1/g

方案二:结合sed工具处理超大型文件(性能更优)

如果文件行数特别多(比如几十万行),Vi的原生替换可能会有点卡顿,这时候用外部的sed工具处理会更高效,还能直接生成可执行的脚本文件。

终端直接处理:

在终端里执行这条命令,直接把处理后的结果输出到新文件output.sh里:

sed 's/\([^ ]\+\) \1/chown user:user \1\nchmod 755 \1/g' Test1.txt > output.sh

在Vi内调用sed原地修改:

不想跳出Vi的话,也可以直接在命令模式里调用sed修改当前打开的文件:

:!sed -i 's/\([^ ]\+\) \1/chown user:user \1\nchmod 755 \1/g' %

这里的%代表当前Vi打开的文件,-i参数让sed直接原地修改文件内容。

内容的提问来源于stack exchange,提问作者Mahadevan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:08:21