Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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 获取文件中最小数字的索引_Bash_Shell_File_Indexing_Minimum - Fatal编程技术网

Bash 获取文件中最小数字的索引

Bash 获取文件中最小数字的索引,bash,shell,file,indexing,minimum,Bash,Shell,File,Indexing,Minimum,有一个输入文件“data.txt”,其中包含以下数字 11.0 22.0 33.0 -10.5 -2 如何找到文件中最小数字的值和索引。在这种情况下,输出将是 Value -10.5 Index 4 使用grep将其拆分为多行,使用cat-n附加行号(索引),然后对值进行sort。对于最小的数字,选择第一条记录(head-1) 如果您希望将值放在单独的变量中 # store the value in a variable $ res=`grep -o '[^ ]\+'

有一个输入文件“data.txt”,其中包含以下数字

11.0    22.0    33.0    -10.5    -2
如何找到文件中最小数字的值和索引。在这种情况下,输出将是

Value -10.5
Index 4

使用
grep
将其拆分为多行,使用
cat-n
附加行号(索引),然后对值进行
sort
。对于最小的数字,选择第一条记录(
head-1

如果您希望将值放在单独的变量中

# store the value in a variable
$ res=`grep -o '[^ ]\+' data.txt | cat -n | sort -g --key=2 | head -1 | xargs`

# then cut out the data
$ index=`echo $res | cut -f1 -d' '`
$ value=`echo $res | cut -f2 -d' '`

$ echo $index
 4
$ echo $value
 0.5

使用
grep
将其拆分为多行,使用
cat-n
附加行号(索引),然后对值进行
sort
。对于最小的数字,选择第一条记录(
head-1

如果您希望将值放在单独的变量中

# store the value in a variable
$ res=`grep -o '[^ ]\+' data.txt | cat -n | sort -g --key=2 | head -1 | xargs`

# then cut out the data
$ index=`echo $res | cut -f1 -d' '`
$ value=`echo $res | cut -f2 -d' '`

$ echo $index
 4
$ echo $value
 0.5
使用Perl一行程序

> cat data.txt
11.0    22.0    33.0    0.5    44.0
> perl -lane ' {@arr=sort @F;foreach(@F) { $x++;  print "$x $_" if $arr[0]==$_ } }' data.txt
4 0.5
>
使用Perl一行程序

> cat data.txt
11.0    22.0    33.0    0.5    44.0
> perl -lane ' {@arr=sort @F;foreach(@F) { $x++;  print "$x $_" if $arr[0]==$_ } }' data.txt
4 0.5
>

请添加一些代码以读取和写入文件我不确定cat是否是用于从文本文件读取数字的正确命令能否请您向我们展示
输入文件
预期输出
?请添加一些代码以读取和写入文件我不确定cat是否是用于从文本文件读取数字的正确命令可以吗向我们显示
输入文件
预期输出
?感谢您的回答。我是否可以将两个变量idxex=4和value=0.5作为输出,以便将这两个变量传递给代码的其他部分?更新了答案,请参见上文。感谢您对代码进行注释。此代码不适用于负数。例如,如果文件包含-10.5,则应选择该值作为最小值。我相应地修改了问题。要处理负数,我想你需要排序-r--key=2。请您相应地修改您的答案。请修改代码,将“sort-r”修改为“sort-g”,以便根据一般数值进行排序。谢谢您的回答。我是否可以将两个变量idxex=4和value=0.5作为输出,以便将这两个变量传递给代码的其他部分?更新了答案,请参见上文。感谢您对代码进行注释。此代码不适用于负数。例如,如果文件包含-10.5,则应选择该值作为最小值。我相应地修改了问题。要处理负数,我想你需要排序-r--key=2。请您相应地修改您的答案。请修改代码,将“sort-r”修改为“sort-g”,以便根据一般数值进行排序。谢谢您的回答。我可以让输出的两个变量index=4和value=-10.5,这样我就可以将这两个变量传递给代码的其他部分吗?我还修改了这个问题,把负数也包括进去。请相应地修改您的解决方案,因为此代码无法正确处理负数。谢谢您的回答。我可以让输出的两个变量index=4和value=-10.5,这样我就可以将这两个变量传递给代码的其他部分吗?我还修改了这个问题,把负数也包括进去。请相应地修改您的解决方案,因为此代码无法正确处理负数。