如何在bash中查找字符串中最大的一组数字

时间:2018-08-21 23:24:04

标签: bash

这是this问题的后续问题。似乎bash中的字符串操作始终使我感到困惑。

如何在bash中找到字符串中最大的一组数字?

所以,如果我有

"123 abc 456"

我会得到“ 456”

如果我有

"456 abc 123"

我仍然会收到“ 456”。

如果我有

"1.005 1.23 4"

我会得到“ 4”

此外,如果您看到我以前的问题,它们与这个问题非常相似。您对awk,sed,regex,pash bash等有何建议,以了解如何自己解决大多数以前的问题?

1 个答案:

答案 0 :(得分:1)

echo "456 abc 123" | grep -oE '[0-9]+' | sort -n | tail -n 1

说明:

  • grep -o-仅打印一行的匹配部分
  • grep -E-使用扩展的正则表达式
  • [0-9]+-匹配一个或多个数字(这是扩展的正则表达式)
    • 对于浮点数,请使用[-+]?[0-9]+\.[0-9]+,尽管sort -n不能处理浮点数。
  • sort -n-数值排序
  • tail -n 1-获取最后一行,即最大数字

BTW,Python版本:

max((int(s) for s in "456 abc 123".split() if s.isdigit()), default=None)