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

如何使用Awk命令替换文件指定位置的手机号子串为固定值

报错原因

你的写法核心错误在于对awk语法的$符号理解有误:$var在awk中代表「编号为var值的字段」。你用substr提取到的是10位手机号纯数字字符串,赋值给var后调用$var,会被awk识别为要读取第N(10位数字)个字段,awk需要为上千万不存在的字段预分配内存,直接触发内存不足报错。

正确实现方案

直接拆分整行拼接替换即可,不需要修改字段或者做正则匹配:

awk '{ print substr($0,1,313) "1234567890" substr($0,324) }' final_phone.txt > final_phone.txt1

逻辑说明:

  • 用substr($0,1,313)提取当前行第1到313位的原始内容
  • 拼接固定替换值1234567890,直接覆盖原本的314-323位
  • 最后拼接substr($0,324)提取324位及之后的剩余内容,整行输出

如果需要兼容行长度不足323的场景,可以添加长度判断,短行直接原样输出:

awk 'length($0)>=323 { print substr($0,1,313) "1234567890" substr($0,324); next }1' final_phone.txt > final_phone.txt1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:36:05