シェルスクリプトに次の形式の変数があります
myVAR = "firstWord###secondWord"
最終結果が次のようになるように、grepまたはその他のツールを使用して2つの変数に分けたいと思います。
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
これは私がzshでそれを行う方法です:
myVAR="firstWord###secondWord"
<<<$myvar sed 's/###/ /' | read myFIRST mySECOND
$ STR='firstWord###secondWord'
$ eval $(echo $STR | sed 's:^:V1=":; /###/ s::";V2=": ;s:$:":')
$ echo $V1
firstWord
$ echo $V2
secondWord