当前位置:  开发笔记 > 编程语言 > 正文

从Shell Script变量中提取分隔符之间的数据

如何解决《从ShellScript变量中提取分隔符之间的数据》经验,为你挑选了1个好方法。

我有这个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

以上都没有工作.这里有什么问题?如何解决这个问题?



1> Inian..:

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

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

man页面上,tr为的使用-c,-d标志,

tr [选项] ... SET1 [SET2]

-c,-C, - compmplement使用SET1的补码

-d, - 删除SET1中的删除字符,不要翻译

要将其存储在变量中,

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

注意: - -cdtrPOSIX兼容的,并在任何具有系统将工作tr装.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有