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
  • 73,512
  • 8
  • 94
  • 138
ogs
  • 999
  • 7
  • 17
  • 40

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
  • 223,850
  • 36
  • 205
  • 328
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
  • 8,734
  • 16
  • 67
  • 148
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
  • 73,512
  • 8
  • 94
  • 138