Visit Our UNIX and Linux User Community


Make all words begin with capital letter?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Make all words begin with capital letter?
# 1  
Old 01-07-2013
Make all words begin with capital letter?

I need to use bash to convert sentences where all words start with a small letter into one where all words start with a capital letter.

So that a string like:

Code:
are utilities ready for hurricane sandy

becomes:

Code:
Are Utilities Ready For Hurricane Sandy

# 2  
Old 01-07-2013
Had this sitting around. Use nawk on solaris.
Code:
awk 'function titlecase(STR, N, M, A, OUT)
{
        OUT=""
        N=split(STR, A, " ");
        for(M=1; M<=N; M++)
        {
                A[M]=tolower(A[M]);
                A[M]=toupper(substr(A[M],1,1)) substr(A[M], 2);
                OUT=OUT" "A[M]
        }

        return(substr(OUT, 2));
}

{ $0=titlecase($0) } 1' inputfile > outputfile

This User Gave Thanks to Corona688 For This Post:
# 3  
Old 01-07-2013
In BASH using tr command:
Code:
#!/bin/bash

for words in are utilities ready for hurricane sandy
do
   for((i=0;i<${#words};i++))
   do
     if [ $i -eq 0 ]
     then
         echo -e "${words:$i:1}\c" | tr '[a-z]' '[A-Z]'
     else
         echo -e "${words:$i:1}\c"
     fi
   done
   echo -e " \c"
done
echo -e "\n"

This User Gave Thanks to Yoda For This Post:
# 4  
Old 01-07-2013
try also:
Code:
typeset -u fl
while read -a line
do
  c=0
  for word in ${line[@]}
  do
    fl=${word[@]:0:1}
    line[$c]="$fl${word[@]:1}"
    (( c = c + 1 ))
  done
  echo ${line[@]}
done < infile

or with awk (to preserve blank space format):
Code:
awk '{for (i=1; i<=NF; i++) {$i=(toupper(substr($i,1,1)) substr($i,2))}} 1' infile

This User Gave Thanks to rdrtx1 For This Post:
# 5  
Old 01-07-2013
Code:
bash$ set -- are utilities ready for hurricane sandy
bash$ echo "${@^}"
Are Utilities Ready For Hurricane Sandy

These 3 Users Gave Thanks to binlib For This Post:
# 6  
Old 01-08-2013
if you have GNU sed, then try the below
Code:
 
$ echo "one two three Four" | sed 's,^.,\U&,;s, .,\U&,g'
One Two Three Four

# 7  
Old 01-08-2013
Quote:
Originally Posted by binlib
Code:
bash$ set -- are utilities ready for hurricane sandy
bash$ echo "${@^}"
Are Utilities Ready For Hurricane Sandy

That is a very neat trick!

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replace the first letter of each line by a capital

Hi, I need to replace, as the title says, the first letter of each line (when it's not a number) by the same letter, but capital. For instance : hello Who 123pass Would become : Hello Who 123pass Is there a way with sed to do that ? Or other unix command ? Thank you :) (7 Replies)
Discussion started by: ganon551
7 Replies

2. Shell Programming and Scripting

Gawk gensub, match capital words and lowercase words

Hi I have strings like these : Vengeance mitt Men Vengeance gloves Women Quatro Windstopper Etip gloves Quatro Windstopper Etip gloves Girls Thermobite hooded jacket Thermobite Triclimate snow jacket Boys Thermobite Triclimate snow jacket and I would like to get the lower case words at... (2 Replies)
Discussion started by: louisJ
2 Replies

3. Shell Programming and Scripting

Counting all words that start with a capital letter in a string using python dictionary

Hi, I have written the following python snippet to store the capital letter starting words into a dictionary as key and no of its appearances as a value in this dictionary against the key. #!/usr/bin/env python import sys import re hash = {} # initialize an empty dictinonary for line in... (1 Reply)
Discussion started by: royalibrahim
1 Replies

4. Shell Programming and Scripting

Match groups of capital words using gawk

Hi I'd like to extract from a text file, using gawk, the groups of words beginning with a capital letter, that are not at the begining of a sentence (i.e. Not after a full stop and a pace ". "), including special characters like registered or trademark ( or ). For example I would like to... (1 Reply)
Discussion started by: louisJ
1 Replies

5. Shell Programming and Scripting

[Solved] check if chars is a capital letter and translate it

how can i check if read -n 1 LETTER; LETTER is a capital letter and after translate in minuscule. i have thought with: tr or no? (7 Replies)
Discussion started by: tafazzi87
7 Replies

6. Shell Programming and Scripting

converting day to capital letter...

Hello, I am receiving a file every day as this format. Since today is friday, the format is, PGI_STG_FRIDAY14.TXT. I need to write the shell script to check if this file exist in folder... I am using date format.. export DATE=`date '+%A'` echo $DATE The output is Friday But i... (8 Replies)
Discussion started by: govindts
8 Replies

7. Shell Programming and Scripting

search for words with capital leters

Hi, I just want to search a file for any words containng a capital letter and then display these words only as a list I have been trying grep but to no has not helped.(im using the bash shell) (7 Replies)
Discussion started by: djdaniel3
7 Replies

8. Shell Programming and Scripting

how to find capital letter names in a file without finding words at start of sentence

Hi, I want to be able to list all the names in a file which begin with a capital letter, but I don't want it to list words that begin a new sentence. Is there any way round this? Thanks for your help. (1 Reply)
Discussion started by: kev269
1 Replies

9. UNIX for Dummies Questions & Answers

Transformation capital letter

:confused: Hye everybody i would like to know if exist a internet site where i can founs some interesting shell script very usefull I need to transform hundreds names of files escribed in CAPITAL letter in minuscule letter do oyu know a mean o do that that thanks to a script or a shell... (1 Reply)
Discussion started by: Dark Angel
1 Replies

Featured Tech Videos