I found a way to do it with compiled dictionary elements (on UV). 1- I create a dictionnary element called EGREP.ARGS that always returns "X": 0001: I 0002: "X"[1,1] 0003: 0004: EGREP.ARGS 0005: 1L 0006: M
2- I create a dictionnary element called "EGREP" which is defined like this: 0001: I 0002: SUBR("DICT.EGREP",@RECORD,@ID,@SENTENCE) 0003: 0004: EGREP 0005: 40L 0006: M DICT.EGREP is defined like this: SUBROUTINE DICT.EGREP(OUT,RECORD,ID,SENTENCE) COM /WORKF/WORKF IF FILEINFO(WORKF,0) = 0 THEN OPEN "", "WORK.FILE" TO WORKF ELSE STOP 201, "WORK.FILE" ;* A type 19 file on Universe (pointer to a directory) END STATUS STAT FROM WORKF ELSE STOP PATH = STAT<27> *--- Extract the arguments for egrep from cmd line ---* ARG.PFX = "EGREP.ARGS NE " POS.EGREP = INDEX(SENTENCE,ARG.PFX,1) + LEN(ARG.PFX) + 1 EGREP.ARG = SENTENCE[POS.EGREP,LEN(SENTENCE)-POS.EGREP+1] EGREP.ARG = EGREP.ARG[1,INDEX(EGREP.ARG,"EGREP",1)-1] EGREP.ARG = CONVERT('"','',EGREP.ARG) TMP.KEY = "egrep.tmp" ;* Using temporary key not ID to avoid problems (ei: spaces, parentheses etc) WRITE RECORD ON WORKF, TMP.KEY ;* Write rec to temp. file CMD = "cd ":PATH:" ; egrep ":EGREP.ARG:" ":TMP.KEY EXECUTE "SH -c ":QUOTE(CMD) CAPTURING OUT DELETE WORKF, TMP.KEY ;* Remove record RETURN This is how I do my search: LIST MYFILE WITH EGREP.ARGS NE "-in blahblah" EGREP (This will do the equivalent of egrep -in blahblahblah MYFILE if MYFILE was a type 19 file) This method writes only one record at a time and deletes it so while it is slow (1 write + a sh executed per record), it will work with limited space available and it uses the Unix egrep command. The arguments to the egrep command are parsed from the sentence between EGREP.ARGS NE and EGREP. ----- Original Message ---- From: Dan McGrath <dmc...@imb.com.au> To: U2 Users List <u2-users@listserver.u2ug.org> Sent: Mon, March 29, 2010 5:13:00 PM Subject: Re: [U2] Regex searching UD files Not even close... We run in ECLTYPE P and don't have access to EVAL and the like. "^[Cc][Hh][Qq].*[5-8][0-9][0-9][0-9]x" Unless you can explain how to duplicate the above search with ESEARCH? @Stuart, that would be ideal, but unfortunately I can't go dumping out multi-gigabyte files. :( -----Original Message----- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Wally Terhune Sent: Tuesday, 30 March 2010 5:22 AM To: U2 Users List Subject: Re: [U2] Regex searching UD files Does UniData ECL ESEARCH command not fill the bill already? Wally Terhune U2 Support Architect Rocket Software 4700 S. Syracuse Street, Suite 400 **Denver, CO 80237 **USA Tel: +1.720.475.8055 Email: wterh...@rs.com Web: www.rocketsoftware.com/u2 -----Original Message----- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Boydell, Stuart Sent: Monday, March 29, 2010 12:22 AM To: U2 Users List Subject: Re: [U2] Regex searching UD files I think this should be one for Rocket to implement a RegexSearch in U2. However, if it's size non-impactive, what I would normally do is copy the file to a temporary directory then run grep across that. Stuart Boydell -----Original Message----- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Dan McGrath Sent: Monday, 29 March 2010 17:08 To: U2 Users List Subject: [U2] Regex searching UD files I've written a small utility to be able to run egrep on a UD file (not UD directory), however its implementation is not ideal. Essentially, I select the file I'm searching, writing each record one at a time to a temp UNIX file and running egrep on it as follows !egrep -q -f MyTempRegexFile MyTempRecordFile ; echo $? Where MyTempRegexFile is a file containing the desired regex pattern stored earlier and MyTempRecordFile is a file name unique to each user. My problem with it is that I have to do a READ on each record, followed by a WRITE then have egrep read it in as well. That's a lot of seemingly unneeded disk IO if I could only stream the record to egrep without have to do a WRITE after the READ. Any ideas? I feel I'm missing something quite obvious. Regards, Dan ######################################################################## ################### The information transmitted in this message and attachments (if any) is intended only for the person or entity to which it is addressed. The message may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer. The intended recipient of this e-mail may only use, reproduce, disclose or distribute the information contained in this e-mail and any attached files with the permission of IMB. ######################################################################## ################### _______________________________________________ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users _______________________________________________ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users _______________________________________________ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users ______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email ______________________________________________________________________ ########################################################################################### The information transmitted in this message and attachments (if any) is intended only for the person or entity to which it is addressed. The message may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer. The intended recipient of this e-mail may only use, reproduce, disclose or distribute the information contained in this e-mail and any attached files with the permission of IMB. ########################################################################################### _______________________________________________ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users _______________________________________________ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users