Получить индекс наименьшего числа в файле - PullRequest
0 голосов
/ 02 ноября 2018

Существует входной файл 'data.txt', который содержит следующие цифры

11.0    22.0    33.0    -10.5    -2

Как найти значение и индекс наименьшего числа в файле. В этом случае вывод будет

Value -10.5
Index 4

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Использование 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
>
0 голосов
/ 02 ноября 2018

Разбейте его на несколько строк, используя 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...