8

シェルスクリプトに次の形式の変数があります

myVAR = "firstWord###secondWord"

最終結果が次のようになるように、grepまたはその他のツールを使用して2つの変数に分けたいと思います。

myFIRST = "firstWord"
mySECOND = "secondWord"

どうすればこれを行うことができますか?#{3} は分割したいものです。

4

4 に答える 4

19

で置換を使用する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/')
于 2012-11-15T23:09:11.683 に答える
6

このための最良のツールはです:

$ echo "firstWord###secondWord" | sed 's@###@\
@'
firstWord
secondWord

完全な例:

$ read myFIRST mySECOND < <(echo "$myvar" | sed 's@###@ @')

$ echo $myFIRST 
firstWord

$ echo $mySECOND 
secondWord
于 2012-11-15T23:06:31.517 に答える
2

これは私がzshでそれを行う方法です:

myVAR="firstWord###secondWord"
<<<$myvar sed 's/###/ /' | read myFIRST mySECOND
于 2012-11-16T09:02:21.940 に答える
2
$ STR='firstWord###secondWord'
$ eval $(echo $STR | sed 's:^:V1=":; /###/ s::";V2=": ;s:$:":')
$ echo $V1
firstWord
$ echo $V2
secondWord
于 2012-11-15T23:38:34.530 に答える