String Manipulation Help


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting String Manipulation Help
# 1  
Old 03-09-2008
String Manipulation Help

Hey Guys,

Right i know how to alter a word to begin with a capital letter, i know how to remove unwanted characters and replace them with the relevant character however i don't now if there is a way to do them all in one line.

Code:

echo -n ${string:0:1} | tr a-z A-Z #convert first letter in string to cap
echo ${string:1} # to remove first char & replace with cap from above
echo ${string/<char>/<char>} # to replace a character

What i would like to know, is there a way i can Join the second statement with the first .. So i can begin at the string from the second letter and at the same time omit unwanted characters.

Thanks in advance!
# 2  
Old 03-09-2008
Nobody ever specifies which language. Smilie Oh well, everybody uses ksh exclusively, right? Smilie
Code:
$ cat cap
#! /usr/bin/ksh

typeset -L1 -u first
name="henry"
first=$name
newname=${first}${name#?}
echo $name $newname
$ ./cap
henry Henry
$

# 3  
Old 03-09-2008
To get it to one line, I used awk...
Code:
$ cat awkcap
#! /usr/bin/ksh

L="abcdefghijklmnopqrstuvwxyz"
U="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
echo 'henry' | awk -v u=$U -v l=$L '{print substr(u,index(l,substr($0,1,1)),1) substr($0,2);}'
$ ./awkcap
Henry
$

The L and U variables could disappear and you could put the strings directly into the awk statement if you feel that I cheated by using those variables. But that makes for a very long statement.
Code:
#! /usr/bin/ksh

echo 'henry' | awk -v u="ABCDEFGHIJKLMNOPQRSTUVWXYZ" -v l="abcdefghijklmnopqrstuvwxyz" '{print substr(u,index(l,substr($0,1,1)),1) substr($0,2);}'

I prefer the first version, but the second is strictly "one line" as requested.

Last edited by Perderabo; 03-09-2008 at 05:29 PM.. Reason: I had my K and L reversed in the upper string!
# 4  
Old 03-09-2008
Yep i knew i forgot to mention something, I'm using bash for this script. That probably means that the code there wont be work for me. After having a break I'm gonna get back on it know to see if i can do anything.

An example of what I'm trying to do (ill use your name example):

string is john#long.smith

So the currently my code removes unwanted characters leaving white spaces in their place, changes the first character to caps however i would want to change each new word to begin with a cap.

so output: John Long Smith - hope you can help! Smilie Ill be working on it in the mean time and get back if i find something.

Thanks!
# 5  
Old 03-09-2008
I edited my earlier post to fix a couple of letters that needed swapping. At this point you are asking a lot for one line of code! But...
Code:
#! /usr/bin/ksh

L="abcdefghijklmnopqrstuvwxyz"
U="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
echo 'i%%%%long $$$john&&&&&&  ((())) silver' |\
sed 's/[^a-zA-Z]/ /g;s/  */ /g'| awk -v u=$U -v l=$L '{for (i=1;i<=NF;i++)printf "%s%s ",substr(u,index(l,substr($i,1,1)),1),substr($i,2);print "";}'

seems to be working. I retreated to my preferred syntax where the long constants are out of the awk script.You can put them back if you really want to keep it to one line. Test run:
Code:
$ ./awkcap
I Long John Silver
$

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

String Manipulation

I'm making a little game in Perl, and I am trying to remove the first instance of a character in an arbitrary string. For example, if the string is "cupcakes"and the user enters another string that contains letters from "cupcake" e.g: "sake"the original string will now look like this (below)... (3 Replies)
Discussion started by: whyte_rhyno
3 Replies

2. Shell Programming and Scripting

Deleting part of a string : string manipulation

i have something like this... echo "teCertificateId" | awk -F'Id' '{ print $1 }' | awk -F'te' '{ print $2 }' Certifica the awk should remove 'te' only if it is present at the start of the string.. anywhere else it should ignore it. expected output is Certificate (7 Replies)
Discussion started by: vivek d r
7 Replies

3. Shell Programming and Scripting

String manipulation

Hello Could you help with small script: How to split string X1 into 3 string String X1 can have 1 or many strings X1='A1:B1:C1:D1:A2:B2:C2:D2:A3:B3:C3:D3' This is output which I want to have: Z1='A1:B1:C1:D1' Z2='A2:B2:C2:D2' Z3='A3:B3:C3:D3' (5 Replies)
Discussion started by: vikus
5 Replies

4. Shell Programming and Scripting

String manipulation

Hi All, Pls help me out on the below, 05 LAMSZ201-ZM-MEMO2-DATE02-5 PIC X(10). 05 LAMSZ201-ZM-MEMO2-AMT02-5 PIC S9(13)V99. 05 LAMSZ201-ZM-MEMO2-TYPE02-6 PIC XXX. 05 LAMSZ201-ZM-MEMO2-DATE02-6 PIC X(10). 05 ... (2 Replies)
Discussion started by: baskivs
2 Replies

5. Shell Programming and Scripting

String Manipulation

Hi, I have a file in the following format 123|shanwer|15DEC2010|bgbh|okok|16JAN3000|okok| I want the following to be in following format 123|shanwer|12\15\2010|bgbh|okok|01\16\3000|okok| SED/PERL/AWK Gurus could you please help me with this? Thanks Shankar (8 Replies)
Discussion started by: Shan2210
8 Replies

6. Shell Programming and Scripting

I need help with string manipulation

First of all I am VERY new to this so bare with me and try and explain everything even if it seems simple. Basically I want to read a line of text from a html file. See if the line of text has a certain string in it. copy an unknown number of characters (the last 4 characters wiil be ".jpg" the... (1 Reply)
Discussion started by: c3lica
1 Replies

7. Shell Programming and Scripting

string manipulation

i have a file that contains a pattern like this: ajay 1234 newyork available kumar 2345 denver singh 2345 newyork ajay 3456 denver kumar 3456 newyork singh 3456 delhi available ajay 4567 miami kumar 4567 miami singh 4567 delhi i want to search for each line... (5 Replies)
Discussion started by: ajay41aj
5 Replies

8. Shell Programming and Scripting

String manipulation

Hi, i am just gettin exposed to UNIX. Could anyone of u help me out with dis problem..? i have a variable 'act' which has the value as follows, echo $act gives -0- -0- -----0---- 2008-06-04 -0- -0- echo "$act" | awk '{print ($act)}' gives, -0- -0- -----0---- 2008-06-04 -0- -0- I... (2 Replies)
Discussion started by: jerrynimrod
2 Replies

9. UNIX for Dummies Questions & Answers

string manipulation

Hi, I have a file with rows of text like so : E100005568374098100000015667 D100005568374032000000112682 H100005228374060800000002430 I need to grab just the last digits(bolded) of each line without the proceeding text/numbers. Thanks (5 Replies)
Discussion started by: james6
5 Replies

10. Shell Programming and Scripting

String Manipulation

Hi, Suppose I have the following text in a file. ORA-00942: table or view does not exist ORA-01555: snapshot too old: rollback segment number string with name "string" too small Is there any way I can list all the text that starts only with 'ORA-'? Or there any grep command that can... (7 Replies)
Discussion started by: kakashi_jet
7 Replies
Login or Register to Ask a Question