LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (http://www.linuxquestions.org/questions/programming-9/)
-   -   Help with Sed and regex (http://www.linuxquestions.org/questions/programming-9/help-with-sed-and-regex-256439/)

cmfarley19 11-18-2004 11:09 AM

Help with Sed and regex
 
Some history...
I have a very large PicBasic file (12000 lines +/-). I am trying to parse out various code segments.

I am attempting to output every line that contains the words "draw" or "load" along with the line number and number of occurances. I can achieve that with:
Code:

cat -n hrc_60.bas | grep -iP "(draw|load)" | cat -n
That produces 429 lines. A bunch of those lines are commented out. I would like to eliminate them from the output.
It seems like sed is the right tool for this job. I am having trouble getting my regex formed correctly.
Code:

cat -n hrc_60.bas | sed "s/\d*\s*'.*//" | grep -iP "(draw|load)" | cat -n
The input to sed is the file listing with line numbers:
Code:

12832  getkeyu:
12833    ' Wait for all keys up
12834    PORTB = 0              ' All output pins low
12835    TRISB = $f0            ' Bottom 4 pins out, top 4 pins in
12836    Pause 1
12837   
12838    IF ((PORTB >> 4) != $f) Then getkeyu    ' If any keys down, loop
12839   
12840    Pause 50                ' Debounce
12841
12842  getkeyp:
12843    ' Wait for keypress
12844    For col = 0 TO 1        ' 2 columns in keypad
12845        PORTB = 0      ' All output pins low
12846        TRISB = (DCD col) ^ $f3 ' Set one column pin to output
12847        @ NOP
12848        row = PORTB >> 4        ' Read row
12849       
12850        IF row != $f Then gotkey        ' If any keydown, exit
12851       
12852        Spkr = 0
12853    Next col
12854    GoTo getkeyp            ' No keys down, go look again
12855
12856  gotkey: ' Change row and column to key number 0 - 15
12857    key = (col * 4) + (NCD (row ^ $f)) - 1
12858   
12859    ' Translate key to telephone keypad tone
12860    ' 10 = *
12861    ' 11 = #
12862    ' 12 = A
12863    ' 13 = B
12864    ' 14 = C
12865    ' 15 = D
12866    LookUp key,[1,2,3,12,4,5,6,13,7,8,9,14,10,0,11,15],tone
12867   
12868    Return                  ' Subroutine over

I want to eliminate lines that are commented like 12833, 12843, 12859-12865 but not lines that contain comments like lines12834 and 12835 etc...

This:
Code:

cat -n hrc_60.bas | sed "s/\d*\s*'.*//" | grep -iP "(draw|load)" | cat -n
Eliminates lines that are commented. It also eliminates all trailing comments.

This however (note the space between \s* and ' ):
Code:

cat -n hrc_60.bas | sed "s/\d*\s* '.*//" | grep -iP "(draw|load)" | cat -n
Eliminates trailing comments leaving commented lines in place.

I think what my rex ex says is match:
- all lines that start with zero or more digits.
- and followed by zero or more whitespaces
- and followed by the character '
- and followed by any number of charcters
- and replace it with nothing

I don't understand why it is removing trailing comments.

Any thoughts/help?

jlliagre 11-18-2004 12:00 PM

Code:

sed "s/\d*\s* '.*//"
Quote:

I don't understand why it is removing trailing comments.
It does because both the number and the spaces are optional (*), so the pattern match too any line with a trailing comment prefixed by a space character, both of them being removed.
If you don't want that, insert the start of line token (^) at the beginning of your regexp.

ahh 11-18-2004 12:14 PM

I think this does what I think your trying to do :)
Code:

sed "s/^[[:digit:]]*[[:space:]]*'.*//"
Hmm, it shouldn't look like that! It should look like this:-
sed "s/^[[:digit:]]*[[:space:]]*'.*//"

What the ...

That didn't work either.

OK, like this but replace the () with []

sed "s/^((:digit:))*((:space:))*'.*//"

Oh god, now I've got smiley faces!!! I hope you get the idea, anyway.

ToniT 11-18-2004 12:24 PM

Almost.
That regexp matches:
- first occasion in the line that start with zero or more digits.
(it doesn't have to be at the start of the line)
- and followed by zero or more whitespaces
- and followed by the character '
- and followed by any number of charcters
- and replace it with nothing

If you want it to match with the start of the line, add ^ to the regexp.
eg.
Code:

cat -n hrc_60.bas | sed "s/^\d*\s* '.*//" | grep -iP "(draw|load)" | cat -n
that will do what you said the previous regexp would do.

cmfarley19 11-18-2004 12:44 PM

Everyone seemed to suggest the same thing:
Code:

cat -n hrc_60.bas | sed "s/^\d*\s* '.*//" | grep -iP "(draw|load)" | cat -n
That did not catch any of the comments. It yielded the same result as not having the sed statement in there at all.
I'll post the output put of:
Code:

cat -n hrc_60.bas | grep -iP "(draw|load)"
This is basically the input piped to sed (all 429 lines!). I think there are about 100 +/- lines that are commented out.
Any help you can provide is much appreciated:
Code:

    22  ' Define ONINT_USED to allow use of the boot loader.
    72  VPORT4        VAR  BYTE    'TRACKING REG. FOR UV,DRAWER,ECT
    92  RELEASE_TM    VAR  BYTE    'DRAWER RELEASE SOLENIOD ON TIME
    93  OPEN_DLY      VAR  BYTE    'USED FOR DRAWER RELEASE ERR MESS TIME
    94  DRAWER_FLAG    VAR  BIT      'SET WHEN DRAWER IS CLOSED
    96  LOAD_COMPLETE  VAR  BIT      'USED TO SEE IF LOAD CYCLE IS DONE
    97  LOAD_START    VAR  BIT      'USED TO SEE IF A LOAD CYCLE WAS STARTED
    98  LOADWAIT_FLAG  VAR  BIT      'SET TO TRY LOAD WAIT ONE TIME
    99  LOAD_AFTER    VAR  BYTE    'TEMP REG THAT HOLDS LOAD WAIT TIME
  113  DRAWER_WAS_LEFT_OPEN VAR BIT  'FLAG FOR CLEARING DRAWER MESS
  119  NEST_UP_TM    VAR  BYTE    'TIMER UNLOAD CYCLE
  120  NEST_DLY      VAR  BYTE    'TIMER FOR NEST DOWN TO DRAWER OPEN
  121  UNLOAD_CMPL    VAR  BIT      'FLAG UNLOAD CYCLE
  122  DRW_NOT_RDY    VAR  BIT      'FLAG UNLOAD CYCLE
  123  NEST_DN_FLAG  VAR  BIT      'FLAG UNLOAD CYCLE
  128  NO_LOAD_UNLOAD VAR  BIT      'SET SO WHEN DOING A REPEAT IT WON'T RE-LOAD
  174  LOAD_WAIT      VAR  BYTE          '100 TIME TO WAIT AFTER CYCLE
  305        'IF TEMP1 = 0 THEN GOTO LOAD_INFOPAC      'HRC 180 REV 2.06
  317  LOAD_INFOPAC:
  465  CNT_LOAD:
  512    GoTo  LOAD_INFOPAC
  527    GoTo  LOAD_MAIN 
  542    IF tone = 1 Then  GoTo  LOAD_MAIN
  559    IF tone = 1 Then  GoTo  LOAD_MAIN
  576    IF tone = 1 Then  GoTo  LOAD_MAIN
  593    IF tone = 1 Then  GoTo  LOAD_MAIN
  610    IF tone = 1 Then  GoTo  LOAD_MAIN
  627    IF tone = 1 Then  GoTo  LOAD_MAIN
  644    IF tone = 1 Then  GoTo  LOAD_MAIN
  661    IF tone = 1 Then  GoTo  LOAD_MAIN
  678    IF tone = 1 Then  GoTo  LOAD_MAIN
  695    IF tone = 1 Then  GoTo  LOAD_MAIN
  712    IF tone = 1 Then  GoTo  LOAD_MAIN
  716  LOAD_MAIN:
  928    IF POWER4 < 11 Then GoTo LOAD_SPEED
  934  LOAD_SPEED:
  935          GoSub MTR_SPEED        'LOAD VALUES IN D TO A
  938  '      GET SAVED VALUES FOR LOAD WAIT TIME
  943    LOAD_WAIT = EEVALUE
  945    IF LOAD_WAIT > 50 Then
  946        LOAD_WAIT = 0
  948        EEVALUE = LOAD_WAIT
  1172    GoSub        DRAWER_RELEASE
  1176    GoSub        DRW_CLOSED_SW                  'WAIT FOR DRAWER TO CLOSE
  1444    NO_LOAD_UNLOAD = 1
  1454                                              'CLEAR "UNLOAD_CMPL"                               
  1455    UNLOAD_CMPL = 0                          'IF NO LENS SET "UNLOAD_CMPL"
  1456                                              'TO START A UNLOAD CYCLE 
  1460              UNLOAD_CMPL = 1
  1473    DRAWER_FLAG = 0
  1478    SPIN1 = C_SPIN_TIM                  'LOAD SPIN 1 TIME
  1480    CURE_TIME_T = CURE_TIME                      'LOAD CURRENT CURE TIME
  1482    NEST_DLY = 5                        '.5 SEC TIMER NEST DOWN TO DRAWER OPEN
  1484    RELEASE_TM = 5                              'SET DRAWER RELEASE TIME TO .5 SEC
  1485    OPEN_DLY = 5                        'FOR ERROR MESS (DRAWER NOT OPEN IN TIME .5 SEC
  1487    LOAD_START = 0                              'CLEAR LOAD START FLAG
  1501    if PORTC.3 = 0 Then GoTo PH1_NO_SC      'IF LENS AT HOME THEN UNLOAD IT
  1503    UNLOAD_CMPL = 1                              'IF NO LENS THEN DON'T TRY TO
  1504    LOAD_COMPLETE = 1                    'LOAD OR UNLOAD
  1509    IF LOAD_COMPLETE = 1 AND NO_LOAD_UNLOAD = 1 Then
  1510        UNLOAD_CMPL = 1
  1511        NO_LOAD_UNLOAD = 0
  1513        LOAD_COMPLETE = 0
  1514        NO_LOAD_UNLOAD = 0                        'CLEAR FLAG TO TRY LOAD CYCLE
  1540    if UNLOAD_CMPL = 1 Then GoTo PH1CHK_DRAWER
  1542    if NEST_DN_FLAG = 1 Then GoTo PH1_DR_OPEN    '1 = LENS ON 2 BUT DRAWER OPEN
  1546    if DRAWER_FLAG = 0 Then GoTo PH1A
  1579    IF NEST_DLY = 0 Then GoTo PH1_DRAWER_OP
  1583  PH1_DRAWER_OP:
  1586          GoSub  DRAWER_REL_ON
  1590          GoSub  DRAWER_REL_OFF
  1597    IF DRAWER_FLAG = 0 Then GoTo PH1_DR_CL_DONE
  1599    GoSub  DRAWER_NOT_MESS
  1612    UNLOAD_CMPL = 1
  1615  PH1CHK_DRAWER:
  1616    if COATFLUID_OUT = 1 OR WASHFLUID_OUT = 1 OR LOST_COM = 1 Then GoTo PH1A  'IF OUT OF FLUID THEN DON'T LOAD LENS
  1618    if LOAD_COMPLETE = 1 Then GoTo PH1A
  1620    if LOAD_START = 1 Then GoTo PH1A_CHK_VIB
  1624    if DRAWER_FLAG = 0 Then GoTo PH1A          ' 1 IN FLAG = DRAWER CLOSED
  1626    LOAD_START = 1
  1662    LOAD_COMPLETE = 1
  1919    if UNLOAD_CMPL = 0 AND DRAWER_FLAG = 0 Then GoTo PH1_DRAWER_OPEN
  1925  PH1_DRAWER_OPEN:
  1926    GoSub  DRAWER_NOTRDY
  1933    IF LOAD_START = 1 OR UNLOAD_CMPL= 0 Then GoTo CHK_LOAD_START1
  1941  CHK_LOAD_START1:
  1945    UV_COAT_STATUS.7 = 1 AND LOAD_COMPLETE = 1 AND UNLOAD_CMPL = 1 Then GoTo NEXT_PH1
  1951    IF LOAD_AFTER > 0 Then
  1952        LOAD_AFTER = (LOAD_AFTER - 1)
  1966    if DRAWER_FLAG = 1 Then GoTo PH1_DRAWER_IN
  1968    LOAD_AFTER = LOAD_WAIT
  1971  '      LOAD WAIT ROUTINE
  1976    if DRAWER_FLAG = 0 Then GoTo DEC_WAIT_1
  1978    LOAD_START = 0
  1979    LOAD_COMPLETE = 0
  1981    GoTo  PH1CHK_DRAWER
  1984    if LOAD_AFTER = 0 Then GoTo PH1_DRAWER_IN
  1986    LOAD_AFTER = (LOAD_AFTER - 1)
  1992  PH1_DRAWER_IN:
  2023    GoSub        DRW_CLOSED_DET                                  'IF REPEAT FLAG IS SET AND DRAWER
  2025    if FALT_REPEAT = 1 AND DRAWER_FLAG = 1 Then GoTo PHASE_1  'IS CLOSED THEN REPEAT WITH WASH
  2027    if FALT_REPEAT = 0 Then GoTo PH1_CNT_PHASE                'AND COAT ONLY OR WAIT FOR DRAWER
  2033    GoSub  DRAWER_NOTRDY
  2061    if DRAWER_FLAG = 1 Then GoTo DRW_CLOSED_FLT1
  2092    GoTo PH1_OPEN_DRAWER
  2094  PH1_OPEN_DRAWER:
  2095    IF DEACTIVATE.3 = 1 Then        'SPIN 3 TURNED ON THEN RELEASE DRAWER
  2096        GoSub    DRAWER_REL_ON          'IF NO LENS THEN DON'T TRY OPEN
  2098        Pause    500                            'DRAWER IF IN SINGLE CYCLE MODE
  2099        GoSub    DRAWER_REL_OFF
  2102        if DRAWER_FLAG = 0 Then GoTo PHASE_2
  2104        GoSub  DRAWER_NOT_MESS
  2221    NO_LOAD_UNLOAD = 1
  2230    UNLOAD_CMPL = 0                                  'CLEARED UNLOAD CYCLE NOT DONE   
  2234    UNLOAD_CMPL = 1
  2247    DRAWER_FLAG = 0
  2250    SPIN1 = C_SPIN_TIM            'LOAD SPIN 1 TIME
  2252    CURE_TIME_T = CURE_TIME      'LOAD CURRENT CURE TIME
  2254    NEST_DLY = 5                  '.5 SEC TIMER NEST DOWN TO DRAWER OPEN
  2256    RELEASE_TM = 5                'DRAWER RELEASE TIME .5 SEC
  2257    OPEN_DLY = 5                  'FOR ERROR MESS (DRAWER NOT OPEN IN TIME .5 SEC
  2259    LOAD_START = 0                'CLEAR LOAD START FLAG
  2273    if PORTC.2 = 0 Then GoTo PH2_NO_SC      'IF LENS AT HOME THEN UNLOAD IT
  2275    UNLOAD_CMPL = 1                              'IF NO LENS THEN DON'T TRY TO
  2276    LOAD_COMPLETE = 1                    'LOAD OR UNLOAD
  2280    IF LOAD_COMPLETE = 1 AND NO_LOAD_UNLOAD = 1 Then
  2281        UNLOAD_CMPL = 1
  2282        NO_LOAD_UNLOAD = 0
  2284        LOAD_COMPLETE = 0                'CLEAR FLAG TO TRY LOAD CYCLE
  2285        NO_LOAD_UNLOAD = 0
  2312    if UNLOAD_CMPL = 1 Then GoTo PH2CHK_DRAWER
  2314    if NEST_DN_FLAG = 1 Then GoTo PH2_DR_OPEN    '1 = LENS ON 2 BUT DRAWER OPEN
  2318    if DRAWER_FLAG = 0 Then GoTo PH2A
  2351    if NEST_DLY = 0 Then GoTo PH2_DRAWER_OP
  2356  PH2_DRAWER_OP:
  2361    GoSub        DRAWER_REL_ON
  2366    GoSub        DRAWER_REL_OFF
  2376    if DRAWER_FLAG = 0 Then GoTo PH2_DR_CL_DONE
  2378    GoSub  DRAWER_NOT_MESS
  2393    UNLOAD_CMPL = 1
  2396  PH2CHK_DRAWER:
  2397    if COATFLUID_OUT = 1 OR WASHFLUID_OUT = 1 OR LOST_COM = 1 Then GoTo PH2A  'IF OUT OF FLUID THEN DON'T LOAD LENS
  2399    if LOAD_COMPLETE = 1 Then GoTo PH2A
  2401    if LOAD_START = 1 Then GoTo PH2A_CHK_VIB
  2405    if DRAWER_FLAG = 0 Then GoTo PH2A          ' 1 IN FLAG = DRAWER CLOSED
  2407    LOAD_START = 1
  2448    LOAD_COMPLETE = 1
  2706    if UNLOAD_CMPL = 0 AND DRAWER_FLAG = 0 Then GoTo PH2_DRAWER_OPEN
  2712  PH2_DRAWER_OPEN:
  2713    GoSub  DRAWER_NOTRDY
  2721    if LOAD_START = 1 OR UNLOAD_CMPL = 0 Then GoTo CHK_LOAD_START2
  2730  CHK_LOAD_START2:
  2734    UV_COAT_STATUS.7 = 1 AND LOAD_COMPLETE = 1 AND UNLOAD_CMPL = 1 Then GoTo NEXT_PH2
  2750    if DRAWER_FLAG = 1 Then GoTo PH2_DRAWER_IN
  2752    LOAD_AFTER = LOAD_WAIT
  2755  '      LOAD WAIT ROUTINE
  2760    if DRAWER_FLAG = 0 Then GoTo DEC_WAIT_2
  2762    LOAD_START = 0
  2763    LOAD_COMPLETE = 0
  2765    GoTo  PH2CHK_DRAWER
  2768    IF LOAD_AFTER = 0 Then GoTo PH2_DRAWER_IN
  2770    LOAD_AFTER = (LOAD_AFTER - 1)
  2777  PH2_DRAWER_IN:
  2809    GoSub        DRW_CLOSED_DET                                  'IF REPEAT FLAG IS SET AND DRAWER
  2811    if FALT_REPEAT = 1 AND DRAWER_FLAG = 1 Then GoTo PHASE_2  'IS CLOSED THEN REPEAT WITH WASH
  2813    if FALT_REPEAT = 0 Then GoTo PH2_CNT_PHASE                'AND COAT ONLY OR WAIT FOR DRAWER
  2819    GoSub  DRAWER_NOTRDY
  2847    if DRAWER_FLAG = 1 Then GoTo DRW_CLOSED_FLT2       
  2878    GoTo PH2_OPEN_DRAWER
  2880  PH2_OPEN_DRAWER:
  2881    IF DEACTIVATE.4 = 1 Then  'SPIN 4 TURNED ON THEN RELEASE DRAWER
  2882        GoSub    DRAWER_REL_ON    'IF NO LENS THEN DON'T TRY OPEN
  2883        Pause    500              'DRAWER IF IN SINGLE CYCLE MODE
  2885        GoSub    DRAWER_REL_OFF
  2888        if DRAWER_FLAG = 0 Then GoTo PHASE_3
  2890        GoSub  DRAWER_NOT_MESS
  3010    NO_LOAD_UNLOAD = 1                  'SET IF ON REPEAT CYCLE
  3020    UNLOAD_CMPL = 0                                  'CLEARED UNLOAD CYCLE NOT DONE
  3024          UNLOAD_CMPL = 1
  3038    NO_LOAD_UNLOAD = 0
  3039    DRAWER_FLAG = 0
  3042    SPIN1 = C_SPIN_TIM            'LOAD SPIN 1 TIME
  3044    CURE_TIME_T = CURE_TIME                      'LOAD CURRENT CURE TIME
  3046    NEST_DLY = 5                  '.5 SEC TIMER NEST DOWN TO DRAWER OPEN
  3048    RELEASE_TM = 5                'DRAWER RELEASE TIME .5 SEC
  3049    OPEN_DLY = 5                  'FOR ERROR MESS (DRAWER NOT OPEN IN TIME .5 SEC
  3051    LOAD_START = 0                'CLEAR LOAD START FLAG
  3065    if PORTC.1 = 0 Then GoTo PH3_NO_SC      'IF LENS AT HOME THEN UNLOAD IT
  3067    UNLOAD_CMPL = 1                              'IF NO LENS THEN DON'T TRY TO
  3068    LOAD_COMPLETE = 1                    'LOAD OR UNLOAD
  3072    IF LOAD_COMPLETE = 1 AND NO_LOAD_UNLOAD = 1 Then
  3073        UNLOAD_CMPL = 1
  3074        NO_LOAD_UNLOAD = 0
  3076        LOAD_COMPLETE = 0                'CLEAR FLAG TO TRY LOAD CYCLE
  3077        NO_LOAD_UNLOAD = 0
  3104    if UNLOAD_CMPL = 1 Then GoTo PH3CHK_DRAWER
  3106    if NEST_DN_FLAG = 1 Then GoTo PH3_DR_OPEN    '1 = LENS ON 2 BUT DRAWER OPEN
  3110    if DRAWER_FLAG = 0 Then GoTo PH3A
  3143    if NEST_DLY = 0 Then GoTo PH3_DRAWER_OP
  3148  PH3_DRAWER_OP:
  3153    GoSub        DRAWER_REL_ON
  3158    GoSub        DRAWER_REL_OFF
  3169    if DRAWER_FLAG = 0 Then GoTo PH3_DR_CL_DONE
  3171    GoSub  DRAWER_NOT_MESS
  3186    UNLOAD_CMPL = 1
  3189  PH3CHK_DRAWER:
  3190    if COATFLUID_OUT = 1 OR WASHFLUID_OUT = 1 OR LOST_COM = 1 Then GoTo PH3A  'IF OUT OF FLUID THEN DON'T LOAD LENS
  3192    if LOAD_COMPLETE = 1 Then GoTo PH3A
  3194    if LOAD_START = 1 Then GoTo PH3A_CHK_VIB
  3198    if DRAWER_FLAG = 0 Then GoTo PH3A          ' 1 IN FLAG = DRAWER CLOSED
  3200    LOAD_START = 1
  3243    LOAD_COMPLETE = 1
  3505    if UNLOAD_CMPL = 0 AND DRAWER_FLAG = 0 Then GoTo PH3_DRAWER_OPEN
  3511  PH3_DRAWER_OPEN:
  3512    GoSub  DRAWER_NOTRDY
  3520    if LOAD_START = 1 OR UNLOAD_CMPL = 0 Then GoTo CHK_LOAD_START3
  3529  CHK_LOAD_START3:
  3533    UV_COAT_STATUS.7 = 1 AND LOAD_COMPLETE = 1 AND UNLOAD_CMPL = 1 Then GoTo NEXT_PH3
  3548    IF DRAWER_FLAG = 1 Then GoTo PH3_DRAWER_IN
  3550    LOAD_AFTER = LOAD_WAIT
  3553  '      LOAD WAIT ROUTINE
  3558    if DRAWER_FLAG = 0 Then GoTo DEC_WAIT_3
  3560    LOAD_START = 0
  3561    LOAD_COMPLETE = 0
  3562    GoTo  PH3CHK_DRAWER
  3565    if LOAD_AFTER = 0 Then GoTo PH3_DRAWER_IN
  3567    LOAD_AFTER = (LOAD_AFTER - 1)
  3572  PH3_DRAWER_IN:
  3607    if FALT_REPEAT = 1 AND DRAWER_FLAG = 1 Then GoTo PHASE_3 'DRAWER IS CLOSED THEN REPEAT
  3615    GoSub DRAWER_NOTRDY
  3644    GoSub        DRW_CLOSED_DET                    'IF DRAWER TIME OUT
  3646    IF DRAWER_FLAG = 1 Then GoTo DRW_CLOSED_FLT3
  3678    GoTo PH3_OPEN_DRAWER
  3680  PH3_OPEN_DRAWER:
  3681    IF DEACTIVATE.1 = 1 Then        'SPIN 1 TURNED ON THEN RELEASE DRAWER
  3682        GoSub    DRAWER_REL_ON          'IF NO LENS THEN DON'T TRY OPEN
  3683        Pause    500                            'DRAWER IF IN SINGLE CYCLE MODE
  3685        GoSub    DRAWER_REL_OFF
  3689        IF DRAWER_FLAG = 0 Then GoTo PHASE_4
  3691        GoSub  DRAWER_NOT_MESS
  3813    NO_LOAD_UNLOAD = 1
  3823    UNLOAD_CMPL = 0                      'CLEARED UNLOAD CYCLE NOT DONE
  3827    UNLOAD_CMPL = 1
  3841    DRAWER_FLAG = 0
  3844    SPIN1 = C_SPIN_TIM        'LOAD SPIN 1 TIME
  3846    CURE_TIME_T = CURE_TIME    'LOAD CURRENT CURE TIME
  3848    NEST_DLY = 5              '.5 SEC TIMER NEST DOWN TO DRAWER OPEN
  3850    RELEASE_TM = 5            'DRAWER RELEASE TIME .5 SEC
  3851    OPEN_DLY = 5              'FOR ERROR MESS (DRAWER NOT OPEN IN TIME .5 SEC
  3853    LOAD_START = 0            'CLEAR LOAD START FLAG
  3867    if PORTC.4 = 0 Then GoTo PH4_NO_SC      'IF LENS AT HOME THEN UNLOAD IT
  3869    UNLOAD_CMPL = 1                              'IF NO LENS THEN DON'T TRY TO
  3870    LOAD_COMPLETE = 1                    'LOAD OR UNLOAD
  3874    IF LOAD_COMPLETE = 1 AND NO_LOAD_UNLOAD = 1 Then
  3875        UNLOAD_CMPL = 1
  3876        NO_LOAD_UNLOAD = 0
  3878        LOAD_COMPLETE = 0                'CLEAR FLAG TO TRY LOAD CYCLE
  3879        NO_LOAD_UNLOAD = 0
  3907    if UNLOAD_CMPL = 1 Then GoTo PH4CHK_DRAWER
  3909    if NEST_DN_FLAG = 1 Then GoTo PH4_DR_OPEN    '1 = LENS ON 1 BUT DRAWER OPEN
  3913    if DRAWER_FLAG = 0 Then GoTo PH4A
  3946    if NEST_DLY = 0 Then GoTo PH4_DRAWER_OP
  3951  PH4_DRAWER_OP:
  3956    GoSub        DRAWER_REL_ON
  3961    GoSub        DRAWER_REL_OFF
  3972    if DRAWER_FLAG = 0 Then GoTo PH4_DR_CL_DONE
  3974    GoSub  DRAWER_NOT_MESS
  3989    UNLOAD_CMPL = 1
  3992  PH4CHK_DRAWER:
  3993    if COATFLUID_OUT = 1 OR WASHFLUID_OUT = 1 OR LOST_COM = 1 Then GoTo PH4A  'IF OUT OF FLUID THEN DON'T LOAD LENS
  3995    if LOAD_COMPLETE = 1 Then GoTo PH4A
  3997    if LOAD_START = 1 Then GoTo PH4A_CHK_VIB
  4001    if DRAWER_FLAG = 0 Then GoTo PH4A          ' 1 IN FLAG = DRAWER CLOSED
  4003    LOAD_START = 1
  4044    LOAD_COMPLETE = 1
  4303    if UNLOAD_CMPL = 0 AND DRAWER_FLAG = 0 Then GoTo PH4_DRAWER_OPEN
  4309  PH4_DRAWER_OPEN:
  4310    GoSub  DRAWER_NOTRDY
  4317    IF  LOAD_START = 1 OR UNLOAD_CMPL = 0 Then GoTo CHK_LOAD_START4
  4325  CHK_LOAD_START4:
  4329    UV_COAT_STATUS.7 = 1 AND LOAD_COMPLETE = 1 AND UNLOAD_CMPL = 1 Then GoTo NEXT_PH4
  4346    IF DRAWER_FLAG = 1 Then GoTo PH4_DRAWER_IN
  4348    LOAD_AFTER = LOAD_WAIT
  4351  '      LOAD WAIT ROUTINE
  4356    IF DRAWER_FLAG = 0 Then GoTo DEC_WAIT_4
  4358    LOAD_START = 0
  4359    LOAD_COMPLETE = 0
  4360    GoTo  PH4CHK_DRAWER
  4363    IF LOAD_AFTER = 0 Then GoTo PH4_DRAWER_IN
  4365    LOAD_AFTER = (LOAD_AFTER - 1)
  4371  PH4_DRAWER_IN:
  4404    GoSub        DRW_CLOSED_DET                                'IF REPEAT FLAG IS SET AND DRAWER
  4406    if FALT_REPEAT = 1 AND DRAWER_FLAG = 1 Then GoTo PHASE_4 'IS CLOSED THEN REPEAT WITH WASH
  4408    if FALT_REPEAT = 0 Then GoTo PH4_CNT_PHASE                'AND COAT ONLY OR WAIT FOR DRAWER
  4414    GoSub  DRAWER_NOTRDY
  4442    GoSub        DRW_CLOSED_DET                      'IF DRAWER TIME OUT
  4444    IF DRAWER_FLAG = 1 Then GoTo DRW_CLOSED_FLT4
  4458    GoTo CNT_PHASE4                          'IF DRAWER NOT CLOSED SET FLAG                         
  4475    GoTo PH4_OPEN_DRAWER
  4477  PH4_OPEN_DRAWER:
  4478    IF DEACTIVATE.2 = 1 Then        'SPIN 2 TURNED ON THEN RELEASE DRAWER
  4479        GoSub    DRAWER_REL_ON          'IF NO LENS THEN DON'T TRY OPEN
  4480        Pause    500                            'DRAWER IF IN SINGLE CYCLE MODE
  4482        GoSub    DRAWER_REL_OFF
  4485        IF DRAWER_FLAG = 0 Then GoTo PHASE_1
  4487        GoSub  DRAWER_NOT_MESS
  4535  DRAWER_NOTRDY:
  4537          LCDOut $fe, $94, "Push In Empty Drawer"      'move to line 3
  4538          LCDOut $fe, $D4, "  To Off-Load Lens  "      'move to line 4
  4554  DRAWER_NOT_MESS:
  4555          LCDOut $fe, $D4, "ERR: DRAWER NOT OPEN"      'move to line 4
  4648    'IF tone = 2 THEN  GOTO  DRAWER_M    'NEXT BUTTON
  4691    LCDOut $fe, $94, "Load Scrap Lens Then"  'move to line 3
  4749    GoSub        DRAWER_RELEASE
  4753    GoSub        DRW_CLOSED_DET                'WAIT FOR DRAWER TO CLOSE
  4755    if DRAWER_FLAG = 0 Then GoTo CP_DRW_WAIT
  4881    GoSub        DRAWER_RELEASE
  4926  SET_POS: 'based on home/load position
  5036    LCDOut $fe, $94, "Load Dosimeter Then"  'move to line 3
  5122    GoSub        DRAWER_RELEASE
  5150    GoSub        DRAWER_RELEASE
  5154    GoSub        DRW_CLOSED_DET                'WAIT FOR DRAWER TO CLOSE
  5156    if DRAWER_FLAG = 0 Then GoTo UV_DRW_WAIT
  5365    LCDOut $fe, $94, "Load Scrap Lens Then"  'move to line 3
  5578    GoSub        DRAWER_RELEASE
  6276  SET_VALUES:                                    ' IF NOT LOAD DEFUALT
  6342    'IF tone = 2 THEN  GOTO  DRAWER_M            'NEXT BUTTON
  6373    'IF tone = 2 THEN  GOTO  DRAWER_M            'NEXT BUTTON
  6404    'IF tone = 2 THEN  GOTO  DRAWER_M            'NEXT BUTTON
  6457    IF tone = 6 Then  GoTo  DRAWER_M                'UP BUTTON
  6578    'IF tone = 2 THEN  GOTO  DRAWER_M        'NEXT BUTTON
  6945    'IF tone = 2 THEN  GOTO  DRAWER_M            'NEXT BUTTON
  7448    IF tone = 13 Then  GoTo DRAWER_M        'DWN BUTTON
  7493    'IF tone = 13 THEN  GOTO drawer_m        'DWN BUTTON
  7567  DRAWER_M:
  7570    LCDOut "Open Drawer  [Diag]"
  7581    GoSub IN_REED1          'WAIT FOR DRAWER TO OPEN
  7585    LCDOut $fe, $D4, "Drawer: OPEN  "        'move to line 4
  7589    LCDOut $fe, $D4, "Drawer: CLOSED "        'move to line 4
  7605    GoSub  DRAWER_RELEASE
  8075    IF tone = 13 Then  GoTo LOADWAIT_M              'DWN BUTTON   
  8097  '      LOAD WAIT MENU  JR 12/17-18
  8099  LOADWAIT_M:
  8102    LOAD_WAIT = EEVALUE
  8104  LOADWAIT_M1B:
  8107    LCDOut "Load-Wait Set [Conf]"
  8110  LOADWAIT_LP:
  8111    LCDOut $Fe, $94, "      Time: ", DEC1 (LOAD_WAIT /10), ".", DEC1 LOAD_WAIT, " Sec "
  8120    'IF tone = 2 THEN  GOTO  LOADWAIT_2_LP            'NEXT BUTTON
  8127    GoTo LOADWAIT_LP
  8130    IF LOAD_WAIT >= 50 Then RST_LWAIT
  8132    LOAD_WAIT = (LOAD_WAIT + 1)
  8134    EEVALUE = LOAD_WAIT
  8137    GoTo  LOADWAIT_LP
  8140    LOAD_WAIT = 0
  8142    EEVALUE = LOAD_WAIT
  8145    GoTo LOADWAIT_LP
  8169    IF tone = 6 Then  GoTo  LOADWAIT_M          'UP BUTTON
  8179  ''''''''''''''''''''''''''''' Defaults for Cure time, Coat Dwell, and Load Wait '''''''''''''
  8195  ''''''''''''''''''''''''''''' Load Wait default = 2.5 Seconds '''''''''''''''''''''''''''''''
  8216    IF C_CODE1 > 9 Then LOAD_DEFAULT
  8219  LOAD_DEFAULT:
  8265    'IF tone = 2 THEN  GOTO  DRAWER_M          'NEXT BUTTON
  8285    'IF tone = 2 THEN  GOTO  DRAWER_M            'NEXT BUTTON
  8316    'IF tone = 2 THEN  GOTO  DRAWER_M            'NEXT BUTTON
  8347    'IF tone = 2 THEN  GOTO  DRAWER_M            'NEXT BUTTON
  8387    IF PCODE1 > 9 Then GoTo LOAD_C_CODES
  8390  LOAD_C_CODES:
  8444    'IF tone = 2 THEN  GOTO  DRAWER_M            'NEXT BUTTON
  8480    'IF tone = 2 THEN  GOTO  DRAWER_M            'NEXT BUTTON
  8516    'IF tone = 2 THEN  GOTO  DRAWER_M            'NEXT BUTTON
  8587    'IF tone = 2 THEN  GOTO  DRAWER_M            'NEXT BUTTON
  9718  '      BIT 1  DRAWER OUT
  9719  '      BIT 2  DRAWER IN
  9856  DRAWER_RELEASE:
  9859    PORTD = VPORT4                    'DRAWER RELEASE SOLENOID
  9873    IF DRAWER_FLAG = 0 Then GoTo DRAWER_RTN
  9875    GoSub DRAWER_NOT_MESS
  9880  DRAWER_RTN:
  9885  DRAWER_REL_ON:
  9895    PORTD = VPORT4                    'DRAWER RELEASE SOLENOID
  9901  DRAWER_REL_OFF:
  9904    PORTD = VPORT4                          'DRAWER RELEASE SOLENOID
 10086    GoTo HALT_UNLOAD_LP
 10095  HALT_UNLOAD_LP:
 10106    LCDOut $fe, $D4, "    UNLOAD LENS    "        'move to line 4
 10111        GoSub CHECK_DRAWER_FOR_UNLOADING
 10112        GoTo UNLOAD_NEXT
 10115    GoTo  HALT_UNLOAD_LP
 10117  UNLOAD_NEXT:
 10131    IF PORTC.2 = 1 Then GoTo HALT_UNLOAD_LP  'SEE IF LENS ON 3RD STATION
 10143    GoSub        DRAWER_RELEASE
 10144    GoTo HALT_UNLOAD_LP
 10151    IF PORTC.1 = 1 Then GoTo HALT_UNLOAD_LP 'SEE IF LENS ON 4TH STATION
 10163    GoSub        DRAWER_RELEASE
 10164    GoTo HALT_UNLOAD_LP
 10171    IF PORTC.4 = 1 Then GoTo HALT_UNLOAD_LP  'SEE IF LENS ON 1ST STATION
 10183    GoSub        DRAWER_RELEASE
 10184    GoTo HALT_UNLOAD_LP
 10191    IF PORTC.3 = 1 Then GoTo HALT_UNLOAD_LP 'SEE IF LENS ON 2ND STATION
 10203    GoSub DRAWER_RELEASE
 10204    GoTo HALT_UNLOAD_LP
 10206  CHECK_DRAWER_FOR_UNLOADING:
 10207    DRAWER_WAS_LEFT_OPEN = 0
 10209  DRAWER_LOOP:
 10212    GoSub DRW_CLOSED_DET          'WAIT FOR DRAWER TO CLOSE
 10214    IF DRAWER_FLAG = 0 Then
 10215        DRAWER_WAS_LEFT_OPEN = 1 'set flag to clear mess after drawer is closed
 10218        LCDOut $fe, $94, "ERR:CLOSE DRAWER NOW"      'move to line 3
 10220        GoTo DRAWER_LOOP
 10223    IF DRAWER_WAS_LEFT_OPEN = 1 Then
 10371  '      110MS PULSE STARTS LOAD SEQUENCE
 10406    PORTD.7 = 0                  'SENDS 90MS PULSE LOAD COMMAND
 10416    Pause 2                              'START DATA LOAD PULSE
 10418    PORTD.7 = 0                  'SENDS 2MS PULSE TO START LOAD SEQUENCE
 11053    PORTD.7 = 0                  'SENDS 90MS PULSE LOAD DATA COMMAN
 11065    PORTD.7 = 0                  'SENDS 2MS PULSE TO START DATA LOAD
 11146        GoSub  CHN_BOTTLE_NOW        'DISPLAY ERROR "MUST LOAD COATING TO CONTINUE
 11195        GoSub  CHN_BOTTLE_NOW            'DISPLAY ERROR "MUST LOAD COATING TO CONTINUE"
 11283    LCDOut $fe, $94, "ERROR: Must Load    "                'move to line 3
 11598        IF POSITION = 1 Then 'handle door opened before index started so we unload at home
 12095    IF PORTC.2 = 1 Then GoTo DRAWER_OPEN
 12097    DRAWER_FLAG = 1                    '1 = CLOSED
 12100  DRAWER_OPEN:
 12101    DRAWER_FLAG = 0
 12116    IF PORTC.2 = 1 Then GoTo DRW_LOOP  'WAIT HERE UNTIL DRAWER IS CLOSED
 12616    GoSub LOAD_DAC
 12620    GoSub LOAD_DAC
 12659  LOAD_DAC:


ahh 11-18-2004 12:55 PM

Replace "\d" with "[[ :digit: ]]" and "\s" with "[[ :space: ]]"

Except dont have any spaces between the "[]" and the ":", I had to put them there or - well, see my previous post :)

I dont believe it!!! :mad:

[ [ : digit : ] ] and [ [ : space : ] ], but with no spaces.

cmfarley19 11-18-2004 02:09 PM

Well, with bits and pieces of help from everyone I came up with:
[code}cat -n hrc_60.bas | sed "s/^[ [ :space: ] ] *[ [ :digit: ] ]*[ [ :space: ] ]*'.*//" | grep -iP "(draw|load)" |cat -n[/code]

That seemed to do the trick. Kind of ugly, but gets the job done.

Thank you all.

PS - ahh, same posting problem!!!


All times are GMT -5. The time now is 06:27 AM.