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
on 2008-10-21 23:03
on 2008-10-21 23: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
on 2008-10-21 23:14
/\b[A-Z]+$/ will match if last word in string is not 100% upppercase
on 2008-10-21 23:14
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: >> a file >> expressions. >> Thank you >> -- >> Ruby Student >> > Rob Biedenharn http://agileconsultingllc.com Rob@AgileConsultingLLC.com
on 2008-10-21 23:25
Also: while read firstword rest; do echo "First word is $firstword" echo "Rest of line is $rest" done
on 2008-10-22 00:17
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 2008-10-22 01:45
On Tue, Oct 21, 2008 at 2:29 PM, Hugh Sasse <email@example.com> 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!
on 2008-10-22 17:04
On Tue, Oct 21, 2008 at 5:24 PM, Brian Candler <firstname.lastname@example.org> 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!