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

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

本帖最后由 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等
1

评分人数

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

回复 12# 悬崖之树


还是谢谢你,但是还是不行,可能你没有理解我要的结果吧!

TOP

下面代码是改进后的:
  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
复制代码
时光荏苒||新陈代谢&&涛声依旧||本性难移

TOP

回复 9# terse




感谢,,,成功了!!!!!!谢谢帮主啊!

TOP

回复 8# CrLf


你好,她只在“ [ ”    后面生成了,小黑方块!  不知道为什么,可能是编码引起的吧!

TOP

回复  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

评分人数

    • qlewa: 很感谢,你又一的击中!技术 + 1

TOP

  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
复制代码

TOP

回复 4# 悬崖之树



但是这个文件不是单排的,是很多行的,怎么处理啊!

TOP

回复 2# apang


也不行啊,一串找不到命令之类!

TOP

回复 3# CrLf

不行啊 ,不知道为什么?

sed: -e expression #1, char 12: unterminated `s' command

TOP

@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
时光荏苒||新陈代谢&&涛声依旧||本性难移

TOP

  1. sed -i "s/.*=[/&\n/g" date.txt
复制代码

TOP

  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
复制代码

TOP

返回列表