Shell/Perl script to convert to Capitalize case


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Shell/Perl script to convert to Capitalize case
# 1  
Old 01-07-2009
Shell/Perl script to convert to Capitalize case

I need a shell script which will convert the given string within a <title> tag to Capitalize case.




E.g "<title>hi man: check this out</title>"


to "<title>Hi Man: Check This Out</title>"
# 2  
Old 01-07-2009
You can do this in Bash, although I wouldn't Smilie

Code:
$ shopt -s compat31
$ string="<title>This is a test</title>"
$ [[ "$string" =~ "<title>(.*)</title>" ]] && echo ${BASH_REMATCH[1]} | tr "[:lower:]" "[:upper:]"
THIS IS A TEST

# 3  
Old 01-07-2009
Ack! You want the first letter of every word capitalized? Okay, a bit trickier than I first thought. Here's the basic case:
Code:
perl -e -p 's/(<title[^>]*>)([^<]*)(<\/title)>/$1 . ucfirst($2) . $3/se'

Here's one way so every word is capitalized. There are always Other Ways too:
Code:
perl -p -e 'if(/(<title[^>]*>)([^<]*)(<\/title>)/) { ' \
          -e '  $lhs= $PREMATCH . $1; $rhs = $POSTMATCH . $3; '\
          -e '  $title = join(" ",map(ucfirst($_),split(" ",$2))); '\
          -e '  $_ = $lhs . $title . $rhs;'\
          -e '}'

The complex line: (1) splits the title string into words (delimited by spaces) and (2) makes every word (via map) capitalized (with ucfirst), and (3) recombines the strings with join. The the entire line is reconstituted.

This won't work if <title> is spread across multiple lines. For that, you should use one of the HTML parsers.

Last edited by otheus; 01-07-2009 at 11:21 AM.. Reason: missing '
# 4  
Old 01-07-2009
Hi Otheus!

Thanks for you response! But both of the above command not working...Please help...

Last edited by otheus; 01-07-2009 at 11:50 AM.. Reason: Oops! Corrected wrong post!
# 5  
Old 01-07-2009
Um, you have to provide a filename or redirect the file into it. Also, I had forgotten an apostrophe. I corrected the post. Try it now.

Last edited by otheus; 01-07-2009 at 11:51 AM.. Reason: update after solution
# 6  
Old 01-07-2009
Or:

Code:
perl -pe's|
    (?<=<title>)
    (.*?)
    (?=</title>)
    |($x=$1)=~s/\b(\w)/\u$1/g;$x
    |gxe'  infile


Last edited by radoulov; 01-07-2009 at 10:29 AM..
# 7  
Old 01-07-2009
You can nest a regular expression within another?? Scarrrry! But cool.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Shell script to convert words to Title case

Hi :) I have a .txt file with thousands of words. I was wondering if i could use a simple sed or awk command to convert / replace all words in the text file to Title Case format ? Example: from: this is line one this is line two this is line three to desired output: This Is Line... (8 Replies)
Discussion started by: martinsmith
8 Replies

2. Shell Programming and Scripting

Convert shell script to Perl

Hello,,I have a very small script that contains these lines; and it works perfectly; however I need to use Perl now as I will need to feel variables from a MySQL table into this; to it would be nice to start by converting this first... find / -perm 777 \( -type f -o -type d \) -exec ls -lid {}... (1 Reply)
Discussion started by: gvolpini
1 Replies

3. Shell Programming and Scripting

HELP on Perl array / sorting - trying to convert Korn Shell Script to Perl

Hi all, Not sure if this should be in the programming forum, but I believe it will get more response under the Shell Programming and Scripting FORUM. Am trying to write a customized df script in Perl and need some help with regards to using arrays and file handlers. At the moment am... (3 Replies)
Discussion started by: newbie_01
3 Replies

4. Shell Programming and Scripting

Help: how to convert perl script to shell script

bash$ mdb-schema x.mdb | perl -wpe 's%^DROP TABLE %DROP TABLE IF EXISTS %i; s%(Memo/Hyperlink|DateTime( \(Short\))?)%TEXT%i; s%(Boolean|Byte|Byte|Numeric|Replication ID|(\w+ )?Integer)%INTEGER%i; s%(BINARY|OLE|Unknown (+)?)%BLOB%i; s%\s*\(\d+\)\s*(,?*)$%${1}%;' | sqlite3 x.db ... (1 Reply)
Discussion started by: jackpapa
1 Replies

5. Shell Programming and Scripting

convert perl code to shell script

This is about how to Monitoring folder for new files using shell script im doing a project using smsserver tools 3. i have used a perl script to handle incoming messages. the content of each message must be directed to a java program. this program generates the answer to reply to the user... (2 Replies)
Discussion started by: x34
2 Replies

6. Shell Programming and Scripting

Script to Convert Upper case to Lower case

Hi All I have a script which extracts values from a Database (A persons name) and puts it into a variable in my script IE: $NAME However the Value in the DB is all in uppercase and contains the users first name and last name EG: > echo $NAME GRAHAM BOYLE > What I need is only the... (7 Replies)
Discussion started by: grahambo2005
7 Replies

7. Shell Programming and Scripting

convert PERL script to SHELL script

Hi all experts, I am new to Unix. Could you please help me to convert the following PERL script to SHELL? I will appreciate. #!/bin/sh use strict; use warnings; my $robot_num = 0; my %rob_tapes; foreach (`/usr/openv/volmgr/bin/vmquery -l -rn $robot_num`) { $rob_tapes{(split)} = 1; }... (6 Replies)
Discussion started by: ma466
6 Replies

8. Shell Programming and Scripting

convert the below perl sript to shell script

perl script: my $logdir = '/smp/dyn/logfiles/fsm/mp/mp'; $logdir = $logdir ."/mp${toDate}*"; i tried to make it..as below .. but not working .. date +%m%d%y logdir = /smp/dyn/logfiles/fsm/mp/mp logdir=$logdir/mp"$date" but it was not working..... can someone please help me out in... (1 Reply)
Discussion started by: mail2sant
1 Replies

9. UNIX for Advanced & Expert Users

Shell script to convert to Title case

I need a shell script which will convert the given string to Title case. E.g "hi man" to "Hi man" (5 Replies)
Discussion started by: SankarV
5 Replies

10. UNIX for Dummies Questions & Answers

lower case to upper case string conversion in shell script

How can convert a Lower case variable value to an upper case in the kron shell script. (3 Replies)
Discussion started by: dchalavadi
3 Replies
Login or Register to Ask a Question