标题: [文本处理] [已解决]批处理怎样在文本的某字符前或后面隔行,插入行? [打印本页]
作者: qlewa 时间: 2013-2-7 16:56 标题: [已解决]批处理怎样在文本的某字符前或后面隔行,插入行?
本帖最后由 qlewa 于 2013-2-8 15:19 编辑
我还是记录全点,
如记事本 date.txt 中- {"i":"20130208-3:12"}];var iIssueCount=101235, aryIssue=[20130207-3.21: line 23,12
-
- 20130207-32.2: line 23,22
-
- 20130207-32.3: line 22,12
-
- 20130207-32.4: line 23,32
-
- 20130207-32.5: line 26,72
-
- 20130207-32.6: line 29,13
- .
- .
- .
- .
-
复制代码
要在 “aryIssue=[ ”后面截断成下一行! 结果要如下:- {"i":"20130208-3:12"}];var iIssueCount=101235, aryIssue=[
- 20130207-3.21: line 23,12
-
- 20130207-32.2: line 23,22
-
- 20130207-32.3: line 22,12
-
- 20130207-32.4: line 23,32
-
- 20130207-32.5: line 26,72
-
- 20130207-32.6: line 29,13
- .
- .
- .
- .
-
复制代码
请帮助下!
简单的话,调用第三方也可以!
SED等
作者: apang 时间: 2013-2-7 18:53
- Set fso = CreateObject("Scripting.FileSystemObject")
- Text = fso.OpenTextFile("date.txt").ReadAll
- Set Re = New RegExp
- Re.Pattern = "(.*?\[)"
- Re.Global = True
- Text = Re.Replace(Text,"$1" & vbCrLf)
- fso.OpenTextfile("a.txt",2,True).Write Text
复制代码
作者: CrLf 时间: 2013-2-7 19:07
- sed -i "s/.*=[/&\n/g" date.txt
复制代码
作者: 悬崖之树 时间: 2013-2-7 22:38
@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
作者: qlewa 时间: 2013-2-8 00:15
回复 3# CrLf
不行啊 ,不知道为什么?
sed: -e expression #1, char 12: unterminated `s' command
作者: qlewa 时间: 2013-2-8 00:16
回复 2# apang
也不行啊,一串找不到命令之类!
作者: qlewa 时间: 2013-2-8 00:17
回复 4# 悬崖之树
但是这个文件不是单排的,是很多行的,怎么处理啊!
作者: CrLf 时间: 2013-2-8 02:34
- @echo off
- (for /f "delims="eol^= %%a in (date.txt) do (
- set "str=%%a"
- setlocal enabledelayedexpansion
- echo;!str:[=[^
-
- !
- endlocal
- ))>date2.txt
- pause
复制代码
作者: terse 时间: 2013-2-8 09:31
回复 CrLf
不行啊 ,不知道为什么?
sed: -e expression #1, char 12: unterminated `s' command
qlewa 发表于 2013-2-8 00:15
- sed "s/ aryIssue=\[/&\n/g" date.txt|more >date2.txt
复制代码
作者: qlewa 时间: 2013-2-8 15:10
回复 8# CrLf
你好,她只在“ [ ” 后面生成了,小黑方块! 不知道为什么,可能是编码引起的吧!
作者: qlewa 时间: 2013-2-8 15:11
回复 9# terse
感谢,,,成功了!!!!!!谢谢帮主啊!
作者: 悬崖之树 时间: 2013-2-8 15:53
下面代码是改进后的:- @echo off&setlocal enabledelayedexpansion
- ::本程序演示将待处理字符串在倒数第3次出现“[”时换行
- set "str=var [iIssueCount=[101235, aryIssue=[20130207-3.22"
- for /l %%i in (1 1 3) do (
- call :loop
- )
- set /a n+=1
- echo !str:~,%n%!
- echo !str:~%n%!
- pause
- :loop
- if "!str:~%n%,1!" neq "[" (
- set /a n-=1&goto loop
- )
- set /a n-=1
- goto :eof
复制代码
作者: qlewa 时间: 2013-2-10 02:03
回复 12# 悬崖之树
还是谢谢你,但是还是不行,可能你没有理解我要的结果吧!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |