zgrepapi.cmd
资源名称:unzip540.zip [点击查看]
上传用户:andy_li
上传日期:2007-01-06
资源大小:1019k
文件大小:2k
源码类别:
压缩解压
开发平台:
MultiPlatform
- /*---------------------------------------------------------------------------
- zapigrep.cmd (ye olde REXX procedure for OS/2)
- Script to search members of a zipfile for a string and print the names of
- any such members (and, optionally, the matching text).
- This is the zipgrep.cmd program completely rewritten to take advantage
- of the REXX API. Among the improvements are:
- egrep no longer needed. All work done by API and this script.
- Added option switches.
- Be aware, however, that this script does not support regular expressions
- as zipgrep does.
- ---------------------------------------------------------------------------*/
- PARSE ARG args
- nocase = 0
- word = 0
- text = 0
- DO WHILE Left(args,1) == '-' | Left(args,1) == '/'
- PARSE VAR args option args
- option = Translate(SubStr(option,2))
- DO WHILE option = ''
- oneopt = Left(option,1)
- option = SubStr(option,2)
- SELECT
- WHEN oneopt == 'W' THEN
- word = 1
- WHEN oneopt == 'I' THEN
- nocase = 1
- WHEN oneopt == 'T' THEN
- text = 1
- OTHERWISE NOP
- END
- END
- END
- PARSE VAR args string zipfile members
- IF (string == '') THEN DO
- SAY 'usage: zipgrep [-i][-t][-w] search_string zipfile [members...]'
- SAY ' Displays the names of zipfile members containing a given string.'
- SAY ' By default it displays filenames only of members containing an'
- SAY ' exact match of the string. Options are:'"0a"x
- SAY ' -i Ignore case'
- SAY ' -t Display matching lines'
- SAY ' -w Match words only'
- EXIT 1
- END
- string = Strip(string,'b','"')
- IF nocase THEN string = Translate(string)
- CALL RxFuncAdd 'UZLoadFuncs', 'UNZIP32', 'UZLoadFuncs'
- CALL UZLoadFuncs
- CALL UZUnZipToStem zipfile, 'file.', members
- DO i = 1 TO file.0
- ptr = file.i
- file = file.ptr
- IF nocase THEN file = Translate(file)
- IF word THEN DO
- wp = WordPos(string,file)
- IF wp>0 THEN
- scan = WordIndex(file,wp)
- ELSE
- scan = 0
- END
- ELSE
- scan = Pos(string,file)
- IF scan = 0 THEN DO
- SAY file.i':'
- IF text THEN DO
- DO WHILE scan > 0
- from = LastPos('0a'x,file,scan)+1
- to = Pos('0a'x,file,scan)
- IF to = 0 THEN to = Length(file.ptr)
- oneline = Strip(SubStr(file.ptr,from,to-from),'T','0a'x)
- SAY Strip(oneline,'T','0d'x)
- IF word THEN DO
- wp = WordPos(string,file,wp+1)
- IF wp>0 THEN
- scan = WordIndex(file,wp)
- ELSE
- scan = 0
- END
- ELSE
- scan = Pos(string,file,scan+1)
- END
- END
- END
- END
- EXIT 0