3

I would like to isolate a term in a specific line defined as follow :

enO.u16LINK=0x01

I succeed in isolate 0x01 by using value=${lines##*=}. At the same time I succeed in retrieve enO.u16LINK using ${lines%=*}. However, I do not find how to isolate enO and u16LINK in two different variable.

Somebody knows a regular expression to satisfy this need ?

Etan Reisner
  • 77,877
  • 8
  • 106
  • 148
ogs
  • 1,139
  • 8
  • 19
  • 42

3 Answers3

2

Using a subshell:

$ read a b c <<< $(IFS=".="; set -- $line; IFS=" "; echo "$*")
$ echo $a
enO
$ echo $b
u16LINK
$ echo $c
0x01
glenn jackman
  • 238,783
  • 38
  • 220
  • 352
1

Use cut ...

$ var1=`echo enO.u16LINK=0x01 | cut -d\= -f1 | cut -d\. -f1`
$ echo $var1
enO
$ var2=`echo enO.u16LINK=0x01 | cut -d\= -f1 | cut -d\. -f2`
$ echo $var2
u16LINK
Red Cricket
  • 9,762
  • 21
  • 81
  • 166
1

Do the same thing you did already again.

$ lines=enO.u16LINK=0x01
$ value=${lines##*=}
$ key=${lines%=*}
$ key1=${key%.*}
$ key2=${key#*.}
$ echo value=$value
value=0x01
$ echo key=$key
key=enO.u16LINK
$ echo key1=$key1
key1=enO
$ echo key2=$key2
key2=u16LINK
Etan Reisner
  • 77,877
  • 8
  • 106
  • 148