我的 shell 脚本中有一个变量,形式为
myVAR = "firstWord###secondWord"
我想使用 grep 或其他一些工具将其分成两个变量,以便最终结果是:
myFIRST = "firstWord"
mySECOND = "secondWord"
我该怎么做呢?#{3} 是我想要拆分的内容。
使用替换sed
:
echo $myVAR | sed -E 's/(.*)#{3}(.*)/\1/'
>>> firstword
echo $myVAR | sed -E 's/(.*)#{3}(.*)/\2/'
>>> secondword
# saving to variables
myFIRST=$(echo $myVAR | sed -E 's/(.*)#{3}(.*)/\1/')
mySECOND=$(echo $myVAR | sed -E 's/(.*)#{3}(.*)/\2/')
最好的工具是sed:
$ echo "firstWord###secondWord" | sed 's@###@\
@'
firstWord
secondWord
一个完整的例子:
$ read myFIRST mySECOND < <(echo "$myvar" | sed 's@###@ @')
$ echo $myFIRST
firstWord
$ echo $mySECOND
secondWord
$ STR='firstWord###secondWord'
$ eval $(echo $STR | sed 's:^:V1=":; /###/ s::";V2=": ;s:$:":')
$ echo $V1
firstWord
$ echo $V2
secondWord
这就是我使用 zsh 的方式:
myVAR="firstWord###secondWord"
<<<$myvar sed 's/###/ /' | read myFIRST mySECOND