这是这个问题的后续问题。bash 中的字符串操作似乎一直让我感到困惑。
如何在bash中找到字符串中最大的一组数字?
所以,如果我有
"123 abc 456"
我会得到“456”
如果我有
"456 abc 123"
我仍然会得到“456”。
如果我有
"1.005 1.23 4"
我会得到“4”
另外,如果你看到我之前的问题,它们与这个非常相似。你对 awk、sed、regex、pure bash 等有什么建议,以学习如何自己解决我以前的大部分问题?
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
- 获取最后一行,即最大的数字顺便说一句,Python 版本:
max((int(s) for s in "456 abc 123".split() if s.isdigit()), default=None)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句