这是this问题的后续问题。似乎bash中的字符串操作始终使我感到困惑。
如何在bash中找到字符串中最大的一组数字?
所以,如果我有
"123 abc 456"
我会得到“ 456”
如果我有
"456 abc 123"
我仍然会收到“ 456”。
如果我有
"1.005 1.23 4"
我会得到“ 4”
此外,如果您看到我以前的问题,它们与这个问题非常相似。您对awk,sed,regex,pash bash等有何建议,以了解如何自己解决大多数以前的问题?
答案 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)