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
···
--
Ruby Student
/\b[A-Z]+$/
will match if last word in string is not 100% upppercase
···
On Tue, Oct 21, 2008 at 10:08 PM, Ruby Student <ruby.student@gmail.com> wrote:
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
--
Ruby Student
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
···
--
Posted via http://www.ruby-forum.com/\.
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 Dolzhenko wrote:
/\b[A-Z]+$/
will match if last word in string is not 100% upppercase
On Tue, Oct 21, 2008 at 10:08 PM, Ruby Student > <ruby.student@gmail.com> wrote:
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
--
Ruby Student
Rob Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com
/\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.
···
On Wed, 22 Oct 2008, Evgeniy Dolzhenko wrote:
On Tue, Oct 21, 2008 at 10:08 PM, Ruby Student <ruby.student@gmail.com> wrote:
> 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
> --
> Ruby Student
>
Thanks to everyone for your help!
···
On Tue, Oct 21, 2008 at 2:29 PM, Hugh Sasse <hgs@dmu.ac.uk> wrote:
On Wed, 22 Oct 2008, Evgeniy Dolzhenko 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.
>
> On Tue, Oct 21, 2008 at 10:08 PM, Ruby Student <ruby.student@gmail.com> > wrote:
> > 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
> > --
> > Ruby Student
> >
>
--
Ruby Student
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!
···
On Tue, Oct 21, 2008 at 5:24 PM, Brian Candler <b.candler@pobox.com> 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/\.
--
Ruby Student