Bash 如何使用shell脚本获取文件中的最小编号

Bash 如何使用shell脚本获取文件中的最小编号,bash,shell,unix,scripting,Bash,Shell,Unix,Scripting,我有一个.config文件,在该文件中有一个变量MinNumber,它包含一些字符串,如JAVA3.5、JAVA4.0、JAVA5。现在,我想使用shell脚本查找最小Java数。 MinNumber=“JAVA3.5、JAVA4.0、JAVA5” 逻辑应该首先在.config文件中找到MinNumber,然后检查最小java数。$cat文件 $ cat file <Connector JAVAEnabled="true" URIEncoding="UTF-8" acceptCount="

我有一个
.config
文件,在该文件中有一个变量
MinNumber
,它包含一些字符串,如
JAVA3.5、JAVA4.0、JAVA5
。现在,我想使用shell脚本查找最小Java数。
MinNumber=“JAVA3.5、JAVA4.0、JAVA5”

逻辑应该首先在.config文件中找到
MinNumber
,然后检查最小java数。

$cat文件
$ cat file
<Connector JAVAEnabled="true" URIEncoding="UTF-8" acceptCount="100" maxHttpHeaderSize="8192" maxSpareThreads="25" maxThreads="25" minSpareThreads="10" port="8444" protocol="HTTP/1.1" scheme="https" secure="true" server=" " MinNumber="CPP1.2, JAVA3.5, JAVA4.0, JAVA5"/>
单向:

$ grep -Po '(?<=MinNumber=")[^"]+' file | sed "s/,/\n/g; s/ //g"  | sed -r 's/([^0-9\.]+)(.*)/\1 \2/' | awk '$2<min{min=$2;x=$1$2;}END{print x}' min=999
CPP1.2

$grep-Po'(?以下是一个示例,演示如何仅依靠标准文本排序来提取最低的字符串

首先,设置一个shell变量,使其具有工作示例:

~ $ MinNumber="JAVA3.5, JAVA4.0, JAVA5"
然后使用
tr
将单空格替换为换行符,使用
sed
去除逗号,
sort
对输出进行排序,然后使用
head
将行输出限制为一行:

~ $ echo $MinNumber | tr ' ' '\n' | sed 's/,//' | sort | head -1
JAVA3.5
下面是另一个示例输入,其中包含更多“Java”值,并且也不符合顺序:

~ $  MinNumber="JAVA9, JAVA3.5, JAVA3, JAVA4.0, JAVA5"
~ $ echo $MinNumber | tr ' ' '\n' | sed 's/,//' | sort | head -1
JAVA3

你尝试了什么,给我们看你的代码。实际上我没有得到相同的逻辑。但是我尝试使用awk命令。用逗号分割字符串,删除
JAVA
string并比较数字。@james:每个变量都在配置文件的单独一行中定义吗?然后对该行使用
grep
,并去掉参数,例如using
cut
。如何在大文件a.config文件中找到变量“MinNumber”,我们只想对“MinNumber”的值进行操作。