找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28331|回复: 12

[文本处理] [已解决]批处理怎样在文本的某字符前或后面隔行,插入行?

[复制链接]
发表于 2013-2-7 16:56:50 | 显示全部楼层 |阅读模式
本帖最后由 qlewa 于 2013-2-8 15:19 编辑

我还是记录全点,
如记事本  date.txt 中
  1. {"i":"20130208-3:12"}];var iIssueCount=101235, aryIssue=[20130207-3.21: line 23,12

  2. 20130207-32.2: line 23,22

  3. 20130207-32.3: line 22,12

  4. 20130207-32.4: line 23,32

  5. 20130207-32.5: line 26,72

  6. 20130207-32.6: line 29,13
  7.      .
  8.      .
  9.      .
  10.      .
复制代码
要在  “aryIssue=[ ”后面截断成下一行!  结果要如下:
  1. {"i":"20130208-3:12"}];var iIssueCount=101235, aryIssue=[
  2. 20130207-3.21: line 23,12

  3. 20130207-32.2: line 23,22

  4. 20130207-32.3: line 22,12

  5. 20130207-32.4: line 23,32

  6. 20130207-32.5: line 26,72

  7. 20130207-32.6: line 29,13
  8.      .
  9.      .
  10.      .
  11.      .
复制代码
请帮助下!

简单的话,调用第三方也可以!

SED等

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2013-2-7 18:53:50 | 显示全部楼层
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. Text = fso.OpenTextFile("date.txt").ReadAll
  3. Set Re = New RegExp
  4. Re.Pattern = "(.*?\[)"
  5. Re.Global = True
  6. Text = Re.Replace(Text,"$1" & vbCrLf)
  7. fso.OpenTextfile("a.txt",2,True).Write Text
复制代码
发表于 2013-2-7 19:07:12 | 显示全部楼层
  1. sed -i "s/.*=[/&\n/g" date.txt
复制代码
发表于 2013-2-7 22:38:11 | 显示全部楼层
@echo off&setlocal enabledelayedexpansion
set "str=var iIssueCount=101235, aryIssue=[20130207-3.22"
:loop
if "!str:~%n%,1!" neq "[" (
set /a n-=1&goto loop
)
echo !str:~,%n%!
echo !str:~%n%!
pause
 楼主| 发表于 2013-2-8 00:15:31 | 显示全部楼层
回复 3# CrLf

不行啊 ,不知道为什么?

sed: -e expression #1, char 12: unterminated `s' command
 楼主| 发表于 2013-2-8 00:16:35 | 显示全部楼层
回复 2# apang


也不行啊,一串找不到命令之类!
 楼主| 发表于 2013-2-8 00:17:41 | 显示全部楼层
回复 4# 悬崖之树



但是这个文件不是单排的,是很多行的,怎么处理啊!
发表于 2013-2-8 02:34:11 | 显示全部楼层
  1. @echo off
  2. (for /f "delims="eol^= %%a in (date.txt) do (
  3.    set "str=%%a"
  4.    setlocal enabledelayedexpansion
  5.    echo;!str:[=[^

  6. !
  7.    endlocal
  8. ))>date2.txt
  9. pause
复制代码
发表于 2013-2-8 09:31:19 | 显示全部楼层
回复  CrLf

不行啊 ,不知道为什么?

sed: -e expression #1, char 12: unterminated `s' command
qlewa 发表于 2013-2-8 00:15
  1. sed  "s/ aryIssue=\[/&\n/g" date.txt|more >date2.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
qlewa + 1 很感谢,你又一的击中!

查看全部评分

 楼主| 发表于 2013-2-8 15:10:42 | 显示全部楼层
回复 8# CrLf


你好,她只在“ [ ”    后面生成了,小黑方块!  不知道为什么,可能是编码引起的吧!
 楼主| 发表于 2013-2-8 15:11:53 | 显示全部楼层
回复 9# terse




感谢,,,成功了!!!!!!谢谢帮主啊!
发表于 2013-2-8 15:53:26 | 显示全部楼层
下面代码是改进后的:
  1. @echo off&setlocal enabledelayedexpansion
  2. ::本程序演示将待处理字符串在倒数第3次出现“[”时换行
  3. set "str=var [iIssueCount=[101235, aryIssue=[20130207-3.22"
  4. for /l %%i in (1 1 3) do (
  5.    call :loop
  6. )
  7. set /a n+=1
  8. echo !str:~,%n%!
  9. echo !str:~%n%!
  10. pause
  11. :loop
  12. if "!str:~%n%,1!" neq "[" (
  13. set /a n-=1&goto loop
  14. )
  15. set /a n-=1
  16. goto :eof
复制代码
 楼主| 发表于 2013-2-10 02:03:05 | 显示全部楼层
回复 12# 悬崖之树


还是谢谢你,但是还是不行,可能你没有理解我要的结果吧!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 01:29 , Processed in 0.023405 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表