[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理如何在文本中非数字的行首加固定内容?

本帖最后由 mrhxn 于 2011-4-27 18:27 编辑

比如文本:
111
地地地地
2222
五五

我的意思是在非数字的行首加固定内容:
111
宋体地地地地
2222
宋体五五

请问,如何实现?
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  1. sed -i "/[^0-9]/ s/^/宋体/" a.txt
复制代码
http://bbs.bathome.net/thread-3981-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @echo off&setlocal enableDelayedExpansion
  2. (for /f "delims=" %%a in (a.txt) do (
  3. set "a=%%a"
  4. for /l %%b in (0,1,9) do if defined a set "a=!a:%%b=!"
  5. if defined a (echo;宋体%%a) else echo;%%a
  6. ))>$
  7. move $ a.txt
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

3# hanyeguxing
如果文本中有这样的情况出现呢:
我 他
我123 他456
***共同提高***

TOP

本帖最后由 batman 于 2011-4-27 12:32 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a  in (a.txt) do (
  3.      set "str=%%a"
  4.      for /l %%b in (0,1,9) do set "str=!str:%%b=!"
  5.      if  "%%a" equ "!str!" set "a=宋体"
  6.   echo !a!%%a&set "a="
  7. ))>$
  8. move $ a.txt
复制代码
***共同提高***

TOP

本帖最后由 applba 于 2011-4-27 17:09 编辑

请问楼主你的数字行会不会是0开头的?

TOP

本帖最后由 hanyeguxing 于 2011-4-27 12:31 编辑

5# batman


1, for /l %%b in (0,1,9) do "set str=!str:%%b=!" 引号打错位置
2, move /y $ a.txt 默认的copycmd=y
3, 我理解他所说的数字行是要求纯数字行,即只由0-9构成
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

7# hanyeguxing
多谢提醒,但你总要考虑行中有空格,等默认分隔符的存在吧。。。
***共同提高***

TOP

8# batman


哈哈,他没说的我就不去考虑。。。。。。。
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

9# hanyeguxing
也是,具体问题具体代码。。。
***共同提高***

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in (1.txt) do (
  3. for /f "delims=0123456789" %%b in ("%%a@") do if "%%b"=="@" (echo;%%a) else echo 宋体%%a
  4. ))>2.txt
  5. pause
复制代码

TOP

谢谢各位,但数字后有冒号的就不行了,比如:
1:
它也给加上了,只要行首是非数字的就加。

TOP

3# hanyeguxing



if defined a (echo;宋体%%a) else echo;%%a

不明白,能解答一下吗?这里变量a无论如何都是定义的啊,为什么要加else

TOP

谢谢各位,但数字后有冒号的就不行了,比如:
1:
它也给加上了,只要行首是非数字的就加。
mrhxn 发表于 2011-4-27 13:14

顶楼怎么不用更明了的例子讲清楚...到底这里说的非数字是匹配整行还是只匹配行首?

TOP

本帖最后由 mrhxn 于 2011-4-27 13:28 编辑
顶楼怎么不用更明了的例子讲清楚...到底这里说的非数字是匹配整行还是只匹配行首?
zm900612 发表于 2011-4-27 13:22


只匹配号首,问题是,行首是1:仍然给加上了。
1:
2
批处理之家

运行后变成这样:
宋体1:
2
宋体批处理之家
我的意思是:
1:
2
宋体批处理之家

TOP

返回列表