Forum: Ruby Help with regular expression

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Ruby S. (Guest)
on 2008-10-22 01:03
(Received via mailing list)
Team,
A colleague asked me if I could write a script to:

Read a text file where each record has two words.
If the second word in the record is not 100% uppercase, write it to a
file
and convert it to uppercase.
I wrote it in Ruby in about 5 lines using
IO.foreach("/tmp/somefile.txt") do
|file| for the input file and fo = File.open("/tmp/somefile.out","a+") for
the output file, upcase method.
Then she threw a curve ball at me telling me that she wanted it in Korn
Shell using regular expression.
The facts are that I don't know how to do this using regular
expressions.
I am not asking anyone to solve for me, but if you can tell me:

How do you compare, using regular expression, the second word in the
input
record for upper case. In other words, if the second word has at least 1
lower-case char, it has to be flagged and translated to upper-case.

I will deal with the I/O issues in Korn Shell.

Thank you
Brian C. (Guest)
on 2008-10-22 01:07
> How do you compare, using regular expression, the second word in the
> input
> record for upper case.

man sed
man expr
man tr

For further help, try the comp.unix.shell group
Evgeniy D. (Guest)
on 2008-10-22 01:14
(Received via mailing list)
/\b[A-Z]+$/
will match if last word in string is not 100% upppercase
Rob B. (Guest)
on 2008-10-22 01:14
(Received via mailing list)
I think you want to use

   string =~ ere

ere is an extended regular expression.

You might also be able to exploit:

   typeset -u somevar

which causes $somevar to be upcased
(e.g., somevar='hello'; [ $somevar == 'HELLO' ] is true)

man ksh is now your friend.

-Rob

On Oct 21, 2008, at 2:17 PM, Evgeniy D. wrote:

>> a file
>> expressions.
>> Thank you
>> --
>> Ruby S.
>>
>

Rob B.    http://agileconsultingllc.com
removed_email_address@domain.invalid
Brian C. (Guest)
on 2008-10-22 01:25
Also:

while read firstword rest; do
  echo "First word is $firstword"
  echo "Rest of line is $rest"
done
Hugh S. (Guest)
on 2008-10-22 02:17
(Received via mailing list)
On Wed, 22 Oct 2008, Evgeniy D. wrote:

> /\b[A-Z]+$/
> will match if last word in string is not 100% upppercase
s/not//

If you convert a string to uppercase, and it already is all uppercase,
then it will be unchanged....  I'd use awk if a dependence on ruby is
not allowed, and no regexp needed.
Ruby S. (Guest)
on 2008-10-22 03:45
(Received via mailing list)
On Tue, Oct 21, 2008 at 2:29 PM, Hugh S. <removed_email_address@domain.invalid> 
wrote:

> not allowed, and no regexp needed.
> > > I wrote it in Ruby in about 5 lines using
> > > How do you compare, using regular expression, the second word in the
> > >
> >
>
>
Thanks to everyone for your help!
Ruby S. (Guest)
on 2008-10-22 19:04
(Received via mailing list)
On Tue, Oct 21, 2008 at 5:24 PM, Brian C. <removed_email_address@domain.invalid>
wrote:

> Also:
>
> while read firstword rest; do
>  echo "First word is $firstword"
>  echo "Rest of line is $rest"
> done
> --
> Posted via http://www.ruby-forum.com/.
>
>
Thanks to everyone for your help and recommendations!
This topic is locked and can not be replied to.