gpt4 book ai didi

bash - 从 Shell 脚本变量中提取定界符之间的数据

转载 作者:行者123 更新时间:2023-11-29 09:36:16 25 4
gpt4 key购买 nike

我有这个 shell 脚本变量,var。它保留 3 个条目,用换行符 分隔。从这个变量 var,我想提取 20.078688。就这两个数字。

var="USER_ID=2
# 0.078688
Suhas"

这些是我试过的代码:

echo "$var" | grep -o -P '(?<=\=).*(?=\n)' # For extracting 2

echo "$var" | awk -v FS="(# |\n)" '{print $2}' # For extracting 0.078688

以上均无效。这里有什么问题?如何解决这个问题?

最佳答案

只需使用 tr单独保留数字、点 ( .) 和空白并删除其他所有内容。

tr -cd '0-9. ' <<<"$var"
2 0.078688

来自man页,属于 tr用于 -c , -d旗帜,

tr [OPTION]... SET1 [SET2]

-c, -C, --complement use the complement of SET1

-d, --delete delete characters in SET1, do not translate

将其存储在变量中,

IFS=' ' read -r var1 var2 < <(tr -cd '0-9. ' <<<"$var")
printf "%s\n" "$var1"
2
printf "%s\n" "$var2"
2
0.078688

或者在一个数组中

IFS=' ' read -ra numArray < <(tr -cd '0-9. ' <<<"$var")
printf "%s\n" "${numArray[@]}"
2
0.078688

注意:- -cd tr 中的标志是 POSIX兼容并将在任何具有 tr 的系统上工作安装。

关于bash - 从 Shell 脚本变量中提取定界符之间的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41823142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com