gpt4 book ai didi

linux - 使用awk时如何将数字和单位与变量分开

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:44:52 24 4
gpt4 key购买 nike

在一个 10 行的 awk 脚本中,我需要将一个变量的内容拆分为一个数字变量和一个单位变量。这是一个简化的例子

~$ echo 139506MB | awk '{
ex = index("KMGTPEZY", substr($1, length($1)));
val = substr($1, 0, length($1) - 2);
print ex " " val
}'
0 139506

我知道单位部分总是 2 个字符,但由于某些原因 ex 总是返回 0 而不是我希望的 MB

问题

知道为什么 ex 不包含该单位吗?

最佳答案

index() 函数中的逻辑是错误的,您提取的字符不是您定义的字符串的一部分。因此,您看到的是返回值 0。

对于使用 GNU Awk 将捕获的组存储到数组的正则表达式方法。使用 match() 函数,您可以执行以下操作。捕获的组存储在数组(ar) 中,您可以从中访问元素 1 和 2。

echo 139506MB | gawk 'match($0, /([[:digit:]]+)([[:alpha:]]+)/, ary) {print ary[1] ary[2]}'

关于linux - 使用awk时如何将数字和单位与变量分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50409047/

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