bash - 在 bash 中的字母处剪切数字字符串

我有一个字符串,例如 plantford1775.274.284b63.11

我一直在使用 identity=$( echo "$identity"| cut -d'.' -f3) 在每个点处剪切,然后选择第三部分。我剩下 284b63

这部分的格式始终是一个字母,中间夹有数量不等的数字。我想取字母前的前几个数字。一个示例代码行是这样的:

identity=$( echo "$identity" | cut -d'anyletter' -f1)

我应该用什么替换 anyletter 以剪切那里列出的任何字母,以便我以字符串 284 结尾?

最佳答案

这可以在单个 awk 中完成,请尝试按照您显示的示例编写和测试。

echo "$identity" | awk -F'.' '{sub(/[^0-9].*/,"",$3);print $3}'

解释: 简单的解释是,将 echo 命令的输出作为标准输入传递给 awk 代码。在awk 程序中,将字段分隔符设置为. 作为值。然后在第 3 个字段中替换(使用 awksub 函数)除第 3 个字段中的 NULL 数字之外的所有内容,然后打印它。

https://stackoverflow.com/questions/70572750/

相关文章:

python - 如何乘以一个数字直到它达到 Python 中的特定数字?

python - 如何检查整数小数点后的值是否为零

c - 为什么这个计算字符串长度的 C 程序会给出错误的输出?

c# - 循环中 Enumerable Count 方法的性能

gradle - 如何在 GitHub 工作流程中重用 gradle 缓存

kotlin - 是否可以使用私有(private)辅助构造函数在 Kotlin 中分配一个 val

typescript - zod:将字符串转换为数字后设置最小最大值

sql - 如何计算将 null 视为零的平均值

python - 如何在句子中交替替换单词中的大小写字母? Python

java - 错误 :Kotlin: Module was compiled with an inc