Visit Our UNIX and Linux User Community


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

Previous Thread | Next Thread
Test Your Knowledge in Computers #72
Difficulty: Easy
The 'Unix philosophy' is a computer design philosophy based on creating small, modular utilities that do one thing and do them well.
True or False?

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

Featured Tech Videos