我一直在寻找一个解决方案,发现了类似的问题,只是他们试图在句子之间用空格分割句子,而答案并不适用于我的情况。
当前,一个变量被设置为这样的字符串:
中的- 123456
我想把它分成两个变量,同时去掉“-”。例如:
var1 =中的
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")'
要用-分隔字符串,你可以使用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")'