8

我的 shell 脚本中有一个变量,形式为

myVAR = "firstWord###secondWord"

我想使用 grep 或其他一些工具将其分成两个变量,以便最终结果是:

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
$ STR='firstWord###secondWord'
$ eval $(echo $STR | sed 's:^:V1=":; /###/ s::";V2=": ;s:$:":')
$ echo $V1
firstWord
$ echo $V2
secondWord
于 2012-11-15T23:38:34.530 回答
2

这就是我使用 zsh 的方式:

myVAR="firstWord###secondWord"
<<<$myvar sed 's/###/ /' | read myFIRST mySECOND
于 2012-11-16T09:02:21.940 回答