如何从以下文本中提取文本并将其存储到变量中:
05:21-09:32, 14:21-19:30
在这里,我想将05存储在一个变量中,将21存储在另一个变量中,将09存储在另一个变量中,依此类推。所有的值都必须存储在数组或单独的变量中。
我试过了:
k="05:21-09:32, 14:21-19:30"
part1=($k | awk -F"-" '{print $1}' | awk -F":" '{print $1}')
part2=($k | awk -F"-" '{print $2}' | awk -F":" '{print $1}')
part3=($k | awk -F"," '{print $2}' | awk -F":" '{print $1}')
part4=($k | awk -F"-" '{print $3}' | awk -F":" '{print $1}')
我需要一个更清晰的解决方案或简短的解决方案。
答案 0 :(得分:2)
您可以将read
与-a
rray选项一起使用:
IFS=':-, ' read -ra my_arr <<< "05:21-09:32, 14:21-19:30"
以上代码会将输入字符串拆分为:
,-
,,
和空格:
$ echo "${my_arr[0]}" "${my_arr[1]}" "${my_arr[2]}" "${my_arr[3]}"
05 21 09 32
答案 1 :(得分:1)
您的代码存在许多问题。
k
将$k
的值传输到标准输出 - 您想要printf '%s\n' "$k"
或者可能不太便携echo "$k"
IFS=':-, '; set -- $k
之类的内容会将部分分配到$1
,$2
,$3
和$4
。