variables in ksh


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting variables in ksh
# 1  
Old 04-13-2002
variables in ksh

I'm new to unix scripting. How would I go about pulling the first 3 characters from a variable in ksh and storing in another variable? Thanks.
# 2  
Old 04-13-2002
Several ways, of course. One popular way is:
var2=`echo $var1 | cut -c1-3`
and some will pipe it through sed, but I prefer to use expr because it is just one command, no pipe:
var2=`expr "$var1" : "\(...\)"`

Whatever command to use, we are "nesting" the command string in back-quotes. The back-quoted command will be replaced in the command line by its output.

In ksh, I think the most efficient way (do man ksh), when you can use it:

var2=${var1#pattern} (remove one occurent from front)
var2=${var1##pattern} (remove mult occurrences from front)
var2=${var1%pattern} (remove one occurrence from end)
var2=${var1%%pattern} (remove mult occurrences from end)


But in this case, we want to remove, from the end, all but the first 3 characters, and I could not come up with an expression to represent that.
Jimbo
# 3  
Old 04-17-2002
Try this:
Code:
$ var=123456
$ var=${var##???}
$ echo $var
456

Hope this helps!
# 4  
Old 04-17-2002
Yep, that will delete the first 3 characters, but steve6368 was wanting to pull (retain) the first 3 characters into another variable.
Jimbo
# 5  
Old 04-17-2002
Oops, in that case it should be :
Code:
$ var=123456
$ var=${var%%???}
$ echo $var
123

# 6  
Old 04-17-2002
LivinFree,

What are the functionality of ## and %% ? Any more special symbols we can use ?

Thanks.
# 7  
Old 04-17-2002
LivinFree, that will delete last 3 characters, and would retain exactly 3 only when your original variable is exactly 6 character. If your original variable is 10 characters, that solution pulls the first 7.

I could not think of a way to retain just the first 3 using that construct, as I mentioned in my first reply. The %% expression would need to represent "all but the first 3 characters".
Jimbo
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Formating variables in KSH

Hi Friends , I want to know how to format the output for the following: i searched in the forum and couldnt get the exact requirement. Thanks in advance . (2 Replies)
Discussion started by: i150371485
2 Replies

2. Shell Programming and Scripting

Help cannot concatenate Ksh variables ?

Cannot combine these two strings into one line, either as a 3rd variable or echo or printing ? Frustrating. for i in `cat /scripts/pathList.dat` do OldRepo= grep Oldhostname ${i}/.svn/entries | tail -1 NewRepo= grep Oldhostname ${i}/.svn/entries | tail -1 | sed '/Oldhostname/... (41 Replies)
Discussion started by: pcpinkerton
41 Replies

3. Shell Programming and Scripting

ksh - for loop with variables

Hi, I 'm trying to send an e-mail for every different line in the .txt for i in {1..$variable} do sed -n "/$i$/p" text.txt done I have two problems about this. First one is that for loop doesn't work and the second one is that i cant get the output of sed (4 Replies)
Discussion started by: ozum
4 Replies

4. Shell Programming and Scripting

Combining two variables in ksh

I can't believe I can't figure this out... given this code: CARS_DATA_LIST=`cat /tmp/file1 | awk '{print $1}' ` FMSA_DATA_LIST=`cat /tmp/file2 | awk '{print $1}' ` The value of each of the above variables is: CARS = a b c d e f g FMSA = a b c q r s I want to declare a third... (8 Replies)
Discussion started by: Shoeless_Mike
8 Replies

5. Shell Programming and Scripting

How to preserve NL in Ksh variables?

I'm trying to set a variable to the output of a command. This is what the comand output to the display looks like: />hciconndump -v TOsiu Dump of connection(s): TOsiu ---------------------------------------------------------------------- Process: A60Tsiu Connection: TOsiu... (2 Replies)
Discussion started by: troym72
2 Replies

6. Shell Programming and Scripting

passing variables to sed in ksh

Hi, i need help passing variables to sed using ksh. My goal is to get particular data from log files. first i put a mark to the log files. echo "TEST_"`date + %m_%d_%Y_%T"` >markFile this will produce a 'markFile' which contain text like this TEST_06_01_2009_21:55:09 then i put the mark... (2 Replies)
Discussion started by: d.anggrianto
2 Replies

7. Shell Programming and Scripting

subtracting variables in ksh

hi all, how do i subract variables in shell ?? am trying to space out the headers and the output generated by the shell so they all line up : currently the output is like this : servers : users server1 : 10 latestServer : 50 so i thought... (3 Replies)
Discussion started by: cesarNZ
3 Replies

8. UNIX for Advanced & Expert Users

Ksh - Env. Variables ??

Hey all, I have been using Ksh and in that I am setting Environment variables. To set Env. Variables I have created my own file "BuildScript.sh" in which i have written : export CLASSPATH=/somedir/some other dir/file:. export PATH=/some dir/file:. But when i am calling this... (4 Replies)
Discussion started by: varungupta
4 Replies

9. Shell Programming and Scripting

Double Substitution variables in ksh

Hi I have a variable whose value is like this i=/test/test1/test2/myfile.cd.070505123457 i would like to have the value of myfile.cd stored into another variable my attempt is test=${i##*/} ;echo $test ##and i get myfile.cd.070505123457 since what i wnat is myfile.cd i try this... (19 Replies)
Discussion started by: xiamin
19 Replies

10. Shell Programming and Scripting

Getting pathname variables with ksh

With C Shell you can get the root, head, tail and extension of a pathname by using pathname variable modifiers. Example Script: #! /bin/csh set pathvar=/home/WSJ091305.txt echo $pathvar:r echo $pathvar:h echo $pathvar:t echo $pathvar:e The result of executing this script is: ... (7 Replies)
Discussion started by: BCarlson
7 Replies
Login or Register to Ask a Question