|
Breaking a String into Four Different Numbers
Question:
I'm having trouble breaking a string into four different numbers.
What I'm starting out with is
foo='1218141 1441 1664 122222'
and what I want to have is
a=1218141
b=1441
c=1664
d=122222
I'm tried using some pattern matching to break the string up into
these four different variables, but the only way I've been able to accomplish
this has been with significantly more code than is absolutely necessary.
There has to be an easier way to do this.
Use ksh:
Code:
$ foo='1218141 1441 1664 122222'
$ echo $foo
1218141 1441 1664 122222
$ echo $foo | read a b c d
$ echo $a
1218141
$ echo $b
1441
$ echo $c
1664
$ echo $d
122222
$
---- or
Or use ordinary bash and avoid the extra pipe and process:
Code:
foo='1218141 1441 1664 122222'
read A B C D <<< "$foo"
echo $A
echo $B
echo $C
echo $D
--- or
Here's one a bit more generic solution using bash's array capabilities:
Code:
declare -a A; export A
FOO="one two three four"
IND=0
set $FOO #break up the string
while test ! -z $1
do
A[$IND]=$1; shift
IND=$(($IND + 1))
done
echo ${A[0]}, ${A[3]} #just a test sample...The idea is to use the
shell's capability of splitting strings into positional parameters, and
then simply loop over them, inserting each value into the array.
--- or
If we use arrays there are also more direct ways of assigning, like
Code:
foo='1218141 1441 1664 122222'
typeset -a bar=($foo)We can then use the individual array elements:
Code:
echo ${bar[0]}
echo ${bar[1]}
echo ${bar[2]}
echo ${bar[3]}or e.g.
Code:
for i in ${bar[@]}; do
echo $i
doneor e.g.
Code:
for ((i=0; i<${#bar[@]};i++)); do
echo ${bar[i]}
done
Have a Unix Problem
Do you have
a UNIX Question?
Unix Books :-
UNIX Programming, Certification,
System Administration, Performance Tuning Reference Books
Return to : - Unix System Administration
Hints and Tips
(c) www.sap-basis-abap.com All material on this site is
Copyright.
Every effort is made to ensure the content integrity.
Information used on this site is at your own risk.
All product names are trademarks of their respective
companies.
The site www.sap-basis-abap.com is in no way affiliated
with or endorsed by any company listed at this site.
Any unauthorised copying or mirroring is prohibited.
|