Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 用于循环Shell脚本程序,以查找特定模式中的最新文件_Bash_Shell_For Loop_Scripting - Fatal编程技术网

Bash 用于循环Shell脚本程序,以查找特定模式中的最新文件

Bash 用于循环Shell脚本程序,以查找特定模式中的最新文件,bash,shell,for-loop,scripting,Bash,Shell,For Loop,Scripting,我对shell脚本非常陌生,我有一个场景,其中我有一个文本文件,其中有一个版本列表,如 1.0.3 1.0.4 1.0.4_a12 1.0.4_b12 我想提取最新版本的值,其中不包含。。我希望文件的输出为1.0.4。有人能帮我写剧本吗?非常感谢。试试看 sed 's/_.*$//g' < input file | sort -n | head -1 sed's//.*$//g'

我对shell脚本非常陌生,我有一个场景,其中我有一个文本文件,其中有一个版本列表,如

1.0.3
1.0.4
1.0.4_a12
1.0.4_b12
我想提取最新版本的值,其中不包含
。我希望文件的输出为
1.0.4
。有人能帮我写剧本吗?非常感谢。

试试看

sed 's/_.*$//g' < input file | sort -n |  head -1
sed's//.*$//g'
试试:


您已经尝试了什么?目录中是否还有其他文件可以查找最新版本?请查看正则表达式,您可以通过这种方式将其过滤掉,然后您可以进行简单的文件名比较,以获得数字最高的文件名。无需使用
for
循环。我建议您从问题中删除该元素,但请随意展示您尝试过的内容,即使它带有
for
循环。@pierrefrancois是的,请不要使用for循环。我已经从问题中删除了这一点,我正在尝试类似的方法,但头部需要替换为尾部。这不是根据版本号排序的方法。您必须使用
sort-V
,而不是
sort-n
。在这个特殊情况下,它起作用了,但在其他情况下不会起作用。
ls * | grep -v '_' | sort -V -r | head -1