中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]把文本里每行不足5位的编号,前面加0补够5位
作者:
标题: [已解决]把文本里每行不足5位的编号,前面加0补够5位 上一主题 | 下一主题
userwww
初级用户





积分 136
发帖 57
注册 2007-9-8
状态 离线
『楼 主』:  [已解决]把文本里每行不足5位的编号,前面加0补够5位

文本里原内容有些行不足5位,想找个批处理把不足5位的,前面加0补足5位.如下面把左边改为右边那样子

  123             >>>>>    00123

   66              >>>>>    00066

  12546          >>>>>    12546

  99               >>>>>     00099

  .....             ...........      .....

   8               >>>>>      00008

第2,7,8,9楼的方法都可以用,谢谢

[ Last edited by userwww on 2007-9-26 at 10:45 PM ]

2007-9-26 11:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  use sed


sed "/^$/!{s/^/00000/;s/0*\(.\{5,\}\)$/\1/}" yourdatafile.ext


   此帖被 +2 点积分    点击查看详情   
评分人:【 userwww 分数: +2  时间:2007-9-26 22:09


2007-9-26 12:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yoyodos
初级用户




积分 128
发帖 59
注册 2007-9-15
状态 离线
『第 3 楼』:  

我又晕,哈哈

2007-9-26 12:23
查看资料  发送邮件  发短消息 网志  OICQ (52721292)  编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 4 楼』:  



  Quote:
Originally posted by yoyodos at 2007-9-26 12:23:
我又晕,哈哈

晕什么?
不好意思,不会用批处理写.

2007-9-26 12:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
userwww
初级用户





积分 136
发帖 57
注册 2007-9-8
状态 离线
『第 5 楼』:  

谢谢版主,我试了,好象文本没反应,不知我哪里搞错了,
我是把你那行命令新建一个批处理来运行的

2007-9-26 12:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 6 楼』:  

RE userwww:
你直接在命令行运行,需要保存文件就重定向一下。

2007-9-26 13:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 7 楼』:  


@echo off
for /f "delims=" %%i in (test.txt) do (
  set str=%%i
  call set str=0000%%str%%
  call echo %%str:~-5%%>>test1.txt
)
pause


   此帖被 +2 点积分    点击查看详情   
评分人:【 userwww 分数: +2  时间:2007-9-26 22:09


2007-9-26 13:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yoyodos
初级用户




积分 128
发帖 59
注册 2007-9-15
状态 离线
『第 8 楼』:  


@echo off
setlocal enabledelayedexpansion
cd.>new.txt
for /f "delims=" %%a in (a.txt) do (
    set s=%%a
    for /l %%i in (0,1,4) do (
        set/a m=%%i
        set "c=!s:~%%i,1!"
        if "!c!"=="" (
                set/a n=5-!m!
                for /l %%k in (1,1,!n!) do (
                    set s=0!s!
                )
        )
    )
    echo !s! >> new.txt
)
pause


   此帖被 +2 点积分    点击查看详情   
评分人:【 userwww 分数: +2  时间:2007-9-26 22:09


2007-9-26 14:30
查看资料  发送邮件  发短消息 网志  OICQ (52721292)  编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 9 楼』:  

@echo off&setlocal EnableDelayedExpansion
for /f "delims=" %%a in (test.txt) do (
set mmm=%%a
call :start
)
pause
goto :eof
:start
for /l %%i in (0,1,10) do if "!mmm:~%%i,1!"=="" set len=%%i && goto :123
:123
if !len! leq 6 set mmm=0!mmm!
if !len! leq 6 goto start
echo !mmm!>>test2.txt

   此帖被 +2 点积分    点击查看详情   
评分人:【 userwww 分数: +2  时间:2007-9-28 18:27


2007-9-26 15:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
userwww
初级用户





积分 136
发帖 57
注册 2007-9-8
状态 离线
『第 10 楼』:  

二楼的方法可以用,原来我的机子上没有SED,找了半天终于搞清楚了

2007-9-26 18:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
userwww
初级用户





积分 136
发帖 57
注册 2007-9-8
状态 离线
『第 11 楼』:  

谢谢楼上的热心人,今天看了很久关于sed的话题,经测试第2,7,8,9楼的方法都可以用,谢谢.:P

2007-9-26 22:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 12 楼』:  

7楼的处理 如果内容超出6位 取后5位吧.

2007-9-26 23:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
userwww
初级用户





积分 136
发帖 57
注册 2007-9-8
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by terse at 2007-9-26 11:22 PM:
7楼的处理 如果内容超出6位 取后5位吧.

如果超过5位,是取后五位

2007-9-28 20:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hdzc
初级用户





积分 146
发帖 86
注册 2007-10-1
状态 离线
『第 14 楼』:  

dddddddddddddddddd

   此帖被 -3 点积分     点击查看详情   
评分人:【 wudixin96 分数: -3  时间:2007-10-1 13:21


2007-10-1 13:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: