我正在尝试从如下所示的行中提取整数:
Result: 23/200
我想将每个整数(23
和200
)分配给单独的变量,但不知道如何分配。我已经走到这一步了:
echo "Result: 23/200." | grep -o -E '[0-9]+'
给出输出:
23
200
我还可以通过管道输入head -1
或tail -1
获取第一行或第二行。然而,我一直无法找出正确的魔法来解救这两者并将它们分配给不同的变量。
我唯一的选择是通过管道传输到文件然后从该文件中读取吗?这就是我现在所倾向于的。
答案1
如果您知道该行没有其他文本,那么
IFS=' /' read -r result first second <<<"$line"
declare -p first second
输出
declare -- first="23"
declare -- second="200"
如果您不知道该行还有多少其他文本,那么我会使用正则表达式:
if [[ $line =~ ([0-9]+)/([0-9]+) ]]; then
first=${BASH_REMATCH[1]}
second=${BASH_REMATCH[2]}
fi
答案2
在 bash 中,这是有效的:
{ read aa; read bb; } < <(echo "Result: 23/200." | grep -o -E '[0-9]+')
之后,echo aa=$aa bb=$bb.
产生预期的结果。