隔离一行中的术语

时间:2014-11-26 23:14:33

标签: regex bash shell variables

我想在以下定义的特定行中隔离一个术语:

enO.u16LINK=0x01

我使用value=${lines##*=}成功完成了隔离0x01。 与此同时,我成功使用enO.u16LINK检索${lines%=*}。 但是,我没有找到如何在两个不同的变量中隔离enOu16LINK

有人知道正则表达式来满足这种需求吗?

3 个答案:

答案 0 :(得分:2)

使用子shell:

$ read a b c <<< $(IFS=".="; set -- $line; IFS=" "; echo "$*")
$ echo $a
enO
$ echo $b
u16LINK
$ echo $c
0x01

答案 1 :(得分:1)

使用剪切......

$ 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

答案 2 :(得分:1)

再做同样的事情。

$ 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