例如,如果我有以下字符串:
I ate [ 6 ] chicken wings and [ 5 ] dishes of salad today.
我想从此字符串中解析6
和5
,以分别存储到两个变量A
和B
。我正在考虑使用[
和]
作为分隔符,然后缩小到用空格分隔..我正在寻找更简单的解决方案。感谢。
答案 0 :(得分:0)
grep -o
:
line="I ate [ 6 ] chicken wings and [ 5 ] dishes of salad today."
n=( $( echo "$line" | grep -oP '(?<=\[ )\d+(?= \])' ) )
a=${n[0]} b=${n[1]}
您也可以直接使用n
数组:
for num in "${n[@]}"; do echo $num; done
答案 1 :(得分:0)
使用“sed”替换所有带空格的非数字并让shell使用空格作为分隔符,你可以很容易地做到这一点:
LINE="hi 1 there, 65 apples and 73 pears"
for i in $(echo $LINE | sed -e "s/[^0-9]/ /g" )
do
echo $i
done
1
65
73
当然,您也可以将“i”指定给您想要的任何变量,或者您可以创建一个数字数组并打印出来:
LINE="hi 1 there 65 apples and 73 pears"
nums=($(echo hi 1 there 65 apples and 73 pears | sed -e "s/[^0-9]/ /g" ))
echo ${nums[@]}
1 65 73