Breaking a string into four different numbers


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Breaking a string into four different numbers
# 1  
Old 10-02-2009
Breaking a string into four different numbers

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.
# 2  
Old 10-02-2009
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
$

# 3  
Old 10-02-2009
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

# 4  
Old 10-02-2009
Thank you Corona. That did the trick!. Its much simpler than what I was trying before.
# 5  
Old 10-03-2009
Quote:
Originally Posted by Azumandious
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.
Hi!

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.

Regards,

pen
# 6  
Old 10-03-2009
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
done

or e.g.
Code:
for ((i=0; i<${#bar[@]};i++)); do
   echo ${bar[i]}
done


Last edited by Scrutinizer; 10-03-2009 at 09:39 AM..
# 7  
Old 10-03-2009
By the way the syntax
Quote:
read A B C D <<< "$foo"
also works in ksh93
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Sort only numbers within a string

Hi, I am having contents in a file like below, cat testfile rpool/swap rpool/swap14 rpool/swap2 rpool/swap3 I want to sort the above contents like, rpool/swap rpool/swap2 rpool/swap3 rpool/swap14 I have tried in this way, (7 Replies)
Discussion started by: Sumanthsv
7 Replies

2. Shell Programming and Scripting

Adding numbers in a string

I am writing a bash script on ubuntu11.10 I have some string having numbers and letter and want to add all the numbers together For example 1s2d23f I want to perform 1 + 2 + 23 and store it in a variable (3 Replies)
Discussion started by: kristinu
3 Replies

3. UNIX for Dummies Questions & Answers

Extracting numbers from a String

Hi all, I'm a new programmer to shell script... and I have no idea how to use substring. I want to extract the numbers from the following string and place it into a variable: "170 unique conformations found" The numbers can be more than three digits depending on the case. I just want to... (10 Replies)
Discussion started by: ah7391
10 Replies

4. Shell Programming and Scripting

Extracting numbers from a string

Hello Everyone, i have quick question. I have file names like: bin_map300.asc and I would like to extract grid300. My approach so far: name=bin_map300.asc echo ${name%%.*} echo ${name##*_} I am stuck combining the two. Any help would be appreciated. (3 Replies)
Discussion started by: creamcheese
3 Replies

5. Shell Programming and Scripting

Concatenating string with numbers

Hi, I want to display the string value with number value. I dont know how to display. Can anyone help me. This is my code export A=${file_name} echo $a $b $sum | awk '{ printf "%011.f,%014.f,%014.f\n", $1,$2,$3}' >> ${MRR_OUTPUT} the out put shold be ${A}, $a, $b filename,... (2 Replies)
Discussion started by: easterraj
2 Replies

6. Shell Programming and Scripting

get partial numbers from a string

Hi Everyone, I have: $val="QQ3_1899_CD4". The output will be: 1899. I did $val =~ /(\d+)/g; the output is 318994, then i use substr to get those 1899. This is not efficient. Is any simple way, like just one line can do? Thanks (1 Reply)
Discussion started by: jimmy_y
1 Replies

7. UNIX for Dummies Questions & Answers

Using Floating Numbers in String

Dear Unix Gurus, I have a list of files that I want to loop over....for example: sl40_z11.70.txt sl41_z11.40.txt sl42_z11.10.txt sl43_z10.80.txt using the script #!/bin/sh # echo -n "....enter first Z-coordinate position....."; read zpos q="scale=3; $zpos" p=0.3 #... (7 Replies)
Discussion started by: tintin72
7 Replies

8. Shell Programming and Scripting

How to sort a string with numbers

Hi, I need help to sort a file contents. I am using sort -r option to basically reverse the comparison in descending order. However, i found out that my file is not sorted according, can anyone please help. My data is something like:- Hello world 20.982342864 343 19.234355545 222... (5 Replies)
Discussion started by: ahjiefreak
5 Replies

9. Shell Programming and Scripting

to find numbers in a string

I writing my script and got stuck in this function. Can someone help me? I need to extract out the numbers inside a string. Ex: INPUT -> OUTPUT abcdef123 -> 123 abc123def -> 123 123abcdef -> 123 a123bc45d -> 123 45 abcdefghi -> -1 Thank you! (12 Replies)
Discussion started by: fongthai
12 Replies

10. Shell Programming and Scripting

How do i get numbers from a string?

Hi... I'm new here and i have a Q... How do i get only the number from a string? like from "rlvol11" i want to get 11 or from "lvol4" i want to get 4 what commands should i use at my script? thanx 4 the help! Eliraz. (13 Replies)
Discussion started by: eliraza6
13 Replies
Login or Register to Ask a Question