Actually, it's not that the double-tabs get swallowed (though that might
occur in some cases) -- it's the fact that the regex is stopping on the
asterisk. Take this string for example:
0${tab}${tab}*${tab}*${tab}
If you use a regex of "^0${tab}${tab}*${tab}*${tab}", then you're
telling the regex engine to match "a zero, followed by a tab, followed
by zero or more tabs, followed by zero or more tabs, and terminated with
another tab." Notice, no "and an asterisk" in there.
To correctly match this string:
"^0${tab}${tab}\*${tab}\*${tab}"
which says "A zero, followed by two tabs, followed by an asterisk,
followed by a tab, followed by an asterisk, terminated with a tab."
Paul Krizak 7171 Southwest Pkwy MS B400.2A
Advanced Micro Devices Austin, TX 78735
Linux/Unix Systems Engineering Desk: (512) 602-8775
Silicon Design Division Cell: (512) 791-0686
Paul Krizak wrote:
> I notice you've got asterisks in some of your regexes:
>
> > */10^I*^I*^I*^I*^Iroot^I/usr/local/bin/bsdsar_gather$
>
> Remember that in regex-ese, asterisk means "zero or more of the previous
> entity". So "^I*^I" means "zero or more tabs, followed by a tab.
> Double-tabs will get swallowed up by the greedy regex. You probably
> need to escape the asterisks.
>
> Also, you should use ${tab} to make it all more readable!!
>
> Paul Krizak 7171 Southwest Pkwy MS B400.2A
> Advanced Micro Devices Austin, TX 78735
> Linux/Unix Systems Engineering Desk: (512) 602-8775
> Silicon Design Division Cell: (512) 791-0686
>
>
> Jo Rhett wrote:
>> On Mar 28, 2008, at 12:02 PM, Paul Krizak wrote:
>>> And it worked fine.
>> ...
>>> And that worked fine too.
>> Dangit, you're right. I dropped some stuff in copy/paste. FARG!
>>
>> Well, here are the lines which won't match no matter what. And I'm
>> having a devil of a time producing a test case for this problem. But
>> it's real. The same lines work without double tabs...
>>
>> [EMAIL PROTECTED] 46$ cat -vet testfile
>> */10^I*^I*^I*^I*^Iroot^I/usr/local/bin/bsdsar_gather$
>> 0^I2^I*^I*^I*^Iroot^I/usr/sbin/freebsd-update cron$
>> 0^I*^I*^I*^I*^Iroot^I/usr/local/sbin/cfexecd -F$
>> 0^I^I2^I*^I*^I*^Iroot^I/usr/sbin/freebsd-update cron$
>> 0^I^I*^I*^I*^I*^Iroot^I/usr/local/sbin/cfexecd -F$
>>
>> [EMAIL PROTECTED] 47$ cat -t cfagent.conf
>>
>> control:
>> ^Iactionsequence^I= ( editfiles )
>>
>> editfiles:
>> ^I{ /home/jrhett/test/testfile
>> ^I^IDeleteLinesMatching
>> "^0^I^I2^I*^I*^I*^Iroot^I/usr/sbin/freebsd-update cron"
>> ^I^IDeleteLinesMatching "^0^I^I*^I*^I*^I*^Iroot^I/usr/local/sbin/cfexecd
>> -F"
>> ^I}
>>
>> [EMAIL PROTECTED] 48$ cfagent -qIf ./cfagent.conf
>> cfengine:arran: Couldn't find a private key
>> (/home/jrhett/.cfagent/ppkeys/localhost.priv) - use cfkey to get one
>> [EMAIL PROTECTED] 49$ cat -vet testfile
>> */10^I*^I*^I*^I*^Iroot^I/usr/local/bin/bsdsar_gather$
>> 0^I2^I*^I*^I*^Iroot^I/usr/sbin/freebsd-update cron$
>> 0^I*^I*^I*^I*^Iroot^I/usr/local/sbin/cfexecd -F$
>> 0^I^I2^I*^I*^I*^Iroot^I/usr/sbin/freebsd-update cron$
>> 0^I^I*^I*^I*^I*^Iroot^I/usr/local/sbin/cfexecd -F$
>>
>
> _______________________________________________
> Help-cfengine mailing list
> [EMAIL PROTECTED]
> https://cfengine.org/mailman/listinfo/help-cfengine
>
_______________________________________________
Bug-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/bug-cfengine