I have number 192.168.21.8.
I want to extract from this number with sed 21 and 8 to variables a and b. Any Ideas?
I did like 's/\(192.168.\)/ /' but its wrong
I have number 192.168.21.8.
I want to extract from this number with sed 21 and 8 to variables a and b. Any Ideas?
I did like 's/\(192.168.\)/ /' but its wrong
Longhand using OSX 10.7.5, default bash terminal, without the use of sed...
Last login: Fri Oct 11 23:52:49 on ttys000
AMIGA:barrywalker~> IFS="."
AMIGA:barrywalker~> num="192.168.21.8"
AMIGA:barrywalker~> arr=($num)
AMIGA:barrywalker~> x="${arr[2]}"
AMIGA:barrywalker~> y="${arr[3]}"
AMIGA:barrywalker~> echo "$x"
21
AMIGA:barrywalker~> echo "$y"
8
AMIGA:barrywalker~> _
var="192.168.21.8."
a=$(awk -F. '{print $3}' <<< "$var")
b=$(awk -F. '{print $4}' <<< "$var")
echo $a $b
21 8
Hi,
Just to show how to use a regex with creation of pseudo-index to get a field:
$ echo '192.168.21.8.' | sed 's/\([0-9]*\.\)\{0\}\([0-9]*\).*/\2/'
192
$ echo '192.168.21.8.' | sed 's/\([0-9]*\.\)\{1\}\([0-9]*\).*/\2/'
168
$ echo '192.168.21.8.' | sed 's/\([0-9]*\.\)\{2\}\([0-9]*\).*/\2/'
21
$ echo '192.168.21.8.' | sed 's/\([0-9]*\.\)\{3\}\([0-9]*\).*/\2/'
8
Regards.
var=192.168.21.8
IFS=. read _ _ a b << EOF
$var
EOF
or
var=192.168.21.8
b=${var##*.}
var=${var%*}
a=${var##*.}
bash or ksh93:
var=192.168.21.8
IFS=. read _ _ a b <<< "$var"
--
@wisecracker, $IFS would need to be saved and restored afterwards
oldIFS=$IFS
....
IFS=$oldIFS
Hi Scrutinizer...
I was aware of saving and restoring IFS as I use it in the AudioScope code but was merely showing how to extract the two variables in simple and understandable terms...
I will remember to do it longhand fully next time... ;o)
Since you are not interested in keeping the 2 first number you could also
IFS=. read a a a b << EOF
(would save the _ )