我有一个字符串,例如 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 个字段中替换(使用 awk
的 sub
函数)除第 3 个字段中的 NULL 数字之外的所有内容,然后打印它。
关于bash - 在 bash 中的字母处剪切数字字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70572750/