You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何自动向文本文件添加大量格式相似的内容?

如何自动向文本文件添加大量格式相似的内容?

当然有办法!不用写完整的C程序或者awk脚本,用Vim/Vi或者Shell命令就能轻松搞定,我给你分享两种最常用的方案:

一、用Vim/Vi快速生成

Vim自带的命令和宏功能完全能搞定这个需求,两种操作方式任你选:

1. 一键批量生成(适合快速操作)

打开Vim后,直接在正常模式下输入这条命令:

:for i in range(1,1000) | put ='user'.printf('%03d',i) | endfor

解释下:

  • range(1,1000) 表示循环变量i从1到999(因为Vim的range是“左闭右开”的)
  • printf('%03d',i) 把数字i格式化成三位带前导零的字符串,比如1变成001,10变成010
  • put =... 就是把拼接好的userXXX插入到当前光标下方

执行完这条命令,你要的user001user999就全部生成了,直接保存退出就行。

2. 录制宏逐步生成(适合理解过程)

如果觉得上面的命令有点抽象,用宏录制也很直观:

  1. 进入Vim后,先按i进入插入模式,输入第一行user001,按Esc回到正常模式
  2. q a开始录制宏(把操作记录到寄存器a里)
  3. 依次执行:yy(复制当前行)→ p(粘贴到下一行)→ Ctrl+a(把当前行的数字加1,Vim会自动保留前导零,001加1后就是002
  4. q停止录制宏
  5. 现在只要输入997 @ a,就会重复执行刚才的宏997次——因为已经有2行了,再执行997次就能得到999行内容

二、用Shell命令直接生成

如果连Vim都不想打开,直接在终端用一行命令就能生成目标文件:

方法1:用printf + 括号展开

printf "user%03d\n" {1..999} > users.txt
  • {1..999} 是Shell的括号展开,会生成1到999的所有数字
  • printf "user%03d\n" 把每个数字格式化成userXXX的格式,%03d保证是三位带前导零的数字,\n是换行
  • > users.txt 把结果输出到users.txt文件里

方法2:用seq + sed

seq -w 1 999 | sed 's/^/user/' > users.txt
  • seq -w 1 999 生成1到999的数字,-w参数让所有数字宽度相同,自动补前导零
  • sed 's/^/user/' 给每行开头加上user字符串
  • 最后重定向到文件就行

这两种Shell方法都能瞬间生成你要的内容,根本不用手动一行行敲!

备注:内容来源于stack exchange,提问作者infosec-guy

火山引擎 最新活动