获取文件中最小编号的索引

时间:2018-11-02 04:29:12

标签: bash shell file indexing minimum

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

11.0    22.0    33.0    -10.5    -2

如何查找文件中最小数字的值和索引。在这种情况下,输出将为

Value -10.5
Index 4

2 个答案:

答案 0 :(得分:2)

使用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
>

答案 1 :(得分:1)

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

# here is the file...
$ cat data.txt
11.0 22.0 33.0 0.5 44.0

# here is the output you want
$ grep -o '[^ ]\+' data.txt | cat -n | sort -g --key=2 | head -1
 4  0.5

如果要在单独的变量中输入值

# 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