| 
 
suntb 
高级用户
 
    
 
  
  
积分 581 
发帖 277 
注册 2006-12-23 
状态 离线
 | 
『楼 主』:
 如何提取超长行指定字符串
 
使用 LLM 解释/回答一下
  
有一文本(飞信手机型号列表)存在超长行,我想提取其中指定的字符串,用P能实现吗? 
文本部分示例如下,具体可看附件
 批处理一:提取每一对括号内的前两个引号中的内容
1680C  1 
310   3 
2610  1 
以此类推
 批处理二:以每一对括号内的第二个引号中的内容为分类标志,提取相应的括号内的第一个引号中的内容
如示例中要提取分类标志为1的所有相应数值,则有 
1680C 
2610 
等等,以此类推
  
mobiletype = new Array("1680C","1","309");mobiletype = new Array("310","3","14");mobiletype = new Array("2610","1","103");...... 
 
 
或者问题简单化,能不能通过P处理的方式将此超长文本行以分号为分隔符变成如下短行 
mobiletype = new Array("1680C","1","309") 
mobiletype = new Array("2610","1","103") 
mobiletype = new Array("2630","1","200") 
mobiletype = new Array("2760","1","201") 
mobiletype = new Array("310","3","14") 
 
 
 Last edited by suntb on 2009-1-5 at 16:48 ]  
 
    
 
  
附件
1:   test.rar (2009-1-5 15:59, 2.94 KiB,下载次数: 13)
 
 
 |   
 | 
  2009-1-5 15:59 | 
  
 | 
 | 
 
suntb 
高级用户
 
    
 
  
  
积分 581 
发帖 277 
注册 2006-12-23 
状态 离线
 | 
 | 
  2009-1-5 16:01 | 
  
 | 
 | 
 
linee 
初级用户
 
  
 
  
  
积分 94 
发帖 49 
注册 2008-12-14 
状态 离线
 | 
『第 3 楼』:
 
 
使用 LLM 解释/回答一下
  
先把超长行变短是不是好处理点呢? 
mobiletype = new Array("1680C","1","309") 
mobiletype = new Array("2610","1","103") 
mobiletype = new Array("2630","1","200") 
mobiletype = new Array("2760","1","201") 
mobiletype = new Array("310","3","14") 
mobiletype = new Array("3109c","1","296") 
mobiletype = new Array("3110C","1","153") 
mobiletype = new Array("3220","1","102") 
mobiletype = new Array("3230","1","2") 
mobiletype = new Array("3250","1","168") 
…… 
  
 
    
 
  
 |   
 | 
  2009-1-5 16:39 | 
  
 | 
 | 
 
suntb 
高级用户
 
    
 
  
  
积分 581 
发帖 277 
注册 2006-12-23 
状态 离线
 | 
『第 4 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by linee at 2009-1-5 16:39: 
先把超长行变短是不是好处理点呢? 
  
如果能将超长行变短,其他的问题我自己可以解决了 
问题是怎么通过P方式变短?  
 
    
 
  
 |   
 | 
  2009-1-5 16:45 | 
  
 | 
 | 
 
linee 
初级用户
 
  
 
  
  
积分 94 
发帖 49 
注册 2008-12-14 
状态 离线
 | 
『第 5 楼』:
 
 
使用 LLM 解释/回答一下
  
超长行纯P可能读不出来,可能要借助第三方工具。 
 
刚测试了下,P最长能处理8184个字符,用P处理的话,你这文本至少要分4次处理。 
 
 Last edited by linee on 2009-1-5 at 21:00 ] 
 
    
 
  
 |   
 | 
  2009-1-5 19:56 | 
  
 | 
 | 
 
tireless 
银牌会员
 
     
 
  
  
积分 2025 
发帖 1122 
注册 2007-9-5 
状态 离线
 | 
『第 6 楼』:
 
 
使用 LLM 解释/回答一下
  
执行 set /p str=<test.txt,得到的 str 的值为 1023 个字符。 
 
 Last edited by tireless on 2009-1-6 at 00:19 ] 
 
    
 
  
 |   
 | 
  2009-1-6 00:14 | 
  
 | 
 | 
 
linee 
初级用户
 
  
 
  
  
积分 94 
发帖 49 
注册 2008-12-14 
状态 离线
 | 
『第 7 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by tireless at 2009-1-6 00:14: 
执行 set /p str=<test.txt,得到的 str 的值为 1023 个字符。 
 
 Last edited by tireless on 2009-1-6 at 00:19 ]  
用for能取到8184个字符。  
 
    
 
  
 |   
 | 
  2009-1-6 12:06 | 
  
 | 
 | 
 
slore 
铂金会员
 
       
 
  
  
积分 5212 
发帖 2478 
注册 2007-2-8 
状态 离线
 | 
『第 8 楼』:
 要不用P调用下面的VBS替换;为回车
 
使用 LLM 解释/回答一下
  
Dim objFSO,objFile 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile("test.txt") 
strall = objFile.ReadAll 
objFile.Close 
 
strall = Replace(strall,";",vbCrLf) 
 
    
 
  
  |  
                  
  
                    S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore |   
 | 
  2009-1-6 12:21 | 
  
 | 
 | 
 
netbenton 
银牌会员
 
      批处理编程迷
  
 
积分 1916 
发帖 752 
注册 2008-12-28 来自 广西 
状态 离线
 | 
『第 9 楼』:
 用debug实现了
 
使用 LLM 解释/回答一下
  
@echo on&setlocal enabledelayedexpansion 
goto :skip 
f 90 l17 50 51 56 57 BF 00 01 89 FE AC 3C 3B 75 02 B0 0A AA E2 F6 5F 5E 59 58 
f a7 l4 90 
t=90 
g a8 
w 
q 
 
:skip 
copy test.txt aaa /y 
debug aaa <%~nx0 
rem 上面,以 ; 号为分隔符将数据分行 
 
cd.>rus.txt 
for /f "tokens=1-3,*" %%a in (aaa) do ( 
	set aa=%%d 
 	set aa=!aa:"=`! 
	for /f "tokens=1-4 delims=`," %%i in ("!aa!") do ( 
 
rem ****aaa 
	set jj=%%j 
	set jj=!jj: =`! 
rem ****aaa 此段用来处理字符串内的空格 
 
	set "_%%k=!_%%k! !jj!" 
	) 
) 
rem 以上,读取数据并分类存入变量 
 
 
for /f "tokens=1,*" %%a in ('set _') do ( 
	set aa=%%a 
	set aa=!aa:~1,-1! 
	echo ***** !aa! 类 *****>>rus.txt 
	for %%i in (%%b) do (set ii=%%i&set ii=!ii:`= !&echo !ii! >>rus.txt) 
	echo **** end !aa! ****>>rus.txt 
	echo.>>rus.txt 
) 
rem 将分类好的变量整理,写入文本文件 
 
pause 
 
 Last edited by netbenton on 2009-1-17 at 03:22 ] 
 
    
 
  
  |  
                  
  
                    精简 
=>    个人 网志      |   
 | 
  2009-1-17 03:18 | 
  
 | 
 | 
 
knoppix7 
银牌会员
 
     
 
  
  
积分 1287 
发帖 634 
注册 2007-5-2 来自 cmd.exe 
状态 离线
 | 
 | 
  2009-1-17 21:19 | 
  
 | 
 | 
 
netbenton 
银牌会员
 
      批处理编程迷
  
 
积分 1916 
发帖 752 
注册 2008-12-28 来自 广西 
状态 离线
 | 
『第 11 楼』:
 
 
使用 LLM 解释/回答一下
  
谢谢,gawk是很值得学习 
但debug应该不算第三方工具吧 
debug 在500k以内还是可以处理的,只是汇编代码还要增加 
 
 Last edited by netbenton on 2009-1-18 at 00:14 ] 
 
    
 
  
  |  
                  
  
                    精简 
=>    个人 网志      |   
 | 
  2009-1-18 00:11 | 
  
 |