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

Luk*_*uke 2 bash shell awk cut

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

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

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

identity=$( echo "$identity" | cut -d'anyletter' -f1)
Run Code Online (Sandbox Code Playgroud)

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

Rav*_*h13 5

这可以在单个中完成awk,请尝试使用您显示的示例进行以下编写和测试。

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

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

  • 你也是。好的解决方案。 (2认同)