免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5183 | 回复: 3
打印 上一主题 下一主题

[文本处理] 如何在文本中生成顺序号 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2021-12-14 09:23 |只看该作者 |倒序浏览
请教,原文本样例如下(行数不固定):
aaaaaa
a0000000abc
a0000000ce
a0000000efc


现希望从第2行开始生成8位顺序号,并替换原来文本中第2-9列的内容,即:
aaaaaa
a0000001abc
a0000002ce
a0000003efc

。。。
。。。
。。。
a0000010efc

a0000011efc


请问如何实现,感谢

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-10-11 06:20:0015-16赛季CBA联赛之山东
日期:2016-05-28 18:18:5615-16赛季CBA联赛之新疆
日期:2017-04-12 22:55:4715-16赛季CBA联赛之青岛
日期:2017-06-26 18:30:0315-16赛季CBA联赛之四川
日期:2017-09-04 12:27:0315-16赛季CBA联赛之福建
日期:2018-02-09 14:28:3315-16赛季CBA联赛之同曦
日期:2018-04-17 12:43:3415-16赛季CBA联赛之浙江
日期:2018-07-14 13:27:4015-16赛季CBA联赛之吉林
日期:2018-09-13 15:48:2915-16赛季CBA联赛之新疆
日期:2016-05-07 05:05:3215-16赛季CBA联赛之八一
日期:2016-03-14 12:32:06程序设计版块每日发帖之星
日期:2015-12-12 06:20:00
2 [报告]
发表于 2021-12-15 11:46 |只看该作者
  1. [root@test-02 ~]# cat a
  2. aaaaaa
  3. a0000000abc
  4. a0000000ce
  5. a0000000efc
  6. [root@test-02 ~]# awk 'NR==1;NR>1{a=sprintf("%07g",NR-1);sub(/0{7}/,a);print $0}' a
  7. aaaaaa
  8. a0000001abc
  9. a0000002ce
  10. a0000003efc
  11. [root@test-02 ~]# awk 'NR==1;NR>1{a=sprintf("%07g",NR-1);sub(/0000000/,a);print $0}' a
  12. aaaaaa
  13. a0000001abc
  14. a0000002ce
  15. a0000003efc
复制代码

论坛徽章:
1
19周年集字徽章-年
日期:2020-10-29 09:39:21
3 [报告]
发表于 2021-12-16 09:18 |只看该作者
说是8位,样例中是7位,按7位来吧:
  1. perl -pe's#\d+#sprintf"%07d",++$n#e'
复制代码

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
4 [报告]
发表于 2021-12-16 16:52 |只看该作者
回复 1# reallytrue


  1. cat 1                                                
  2. aaaaaa
  3. a0000000abc
  4. a0000000ce
  5. a0000000efc

  6. awk 'NR>1{sub(substr($1,2,7),sprintf("%07d",++a))}1' 1
  7. aaaaaa
  8. a0000001abc
  9. a0000002ce
  10. a0000003efc
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP