我一直在寻找解决方案并发现了类似的问题,只是他们试图用空格分隔句子,而答案不适用于我的情况。
当前,一个变量被设置为这样的字符串:
ABCDE-123456
我想将其拆分为 2 个变量,同时消除“-”。即:
var1=ABCDE
var2=123456
怎么可能做到这一点?
这是对我有用的解决方案:
var1=$(echo $STR | cut -f1 -d-)
var2=$(echo $STR | cut -f2 -d-)
是否可以使用没有定界符的 cut 命令(每个字符都设置为变量)?
var1=$(echo $STR | cut -f1 -d?)
var2=$(echo $STR | cut -f1 -d?)
var3=$(echo $STR | cut -f1 -d?)
等
要拆分由 -
分隔的字符串,您可以使用 read
和 IFS
:
$ IFS=- read -r var1 var2 <<< ABCDE-123456
$ echo "$var1"
ABCDE
$ echo "$var2"
123456
编辑:
以下是如何将每个单独的字符读入数组元素:
$ read -ra foo <<<"$(echo "ABCDE-123456" | sed 's/./& /g')"
转储数组:
$ declare -p foo
declare -a foo='([0]="A" [1]="B" [2]="C" [3]="D" [4]="E" [5]="-" [6]="1" [7]="2" [8]="3" [9]="4" [10]="5" [11]="6")'
如果字符串中有空格:
$ IFS=$'\v' read -ra foo <<<"$(echo "ABCDE 123456" | sed $'s/./&\v/g')"
$ declare -p foo
declare -a foo='([0]="A" [1]="B" [2]="C" [3]="D" [4]="E" [5]=" " [6]="1" [7]="2" [8]="3" [9]="4" [10]="5" [11]="6")'