2015-12-15 4 views
-1

У меня есть файл, упорядоченный по строкам и столбцам. Я хочу найти минимум
в данной строке, например номер строки 4, а затем передать соответствующий номер столбца в переменной bash (лев).Awk - найти минимум в заданной строке

Однако небольшой код, который я написал не работает

lev=`echo - |awk '{ 
    m=100; l=1; 
    {If (NR==4) 
    for(i=2;i<=NF;i++) 
    { 
     if($i <m) 
     m=$i; 
     l=i 
    } 
    } 
    print l 

    }' file.txt` 
+2

Зачем вам нужно 'echo - |'? – anubhava

+3

Было бы хорошо поделиться некоторыми [mcve], чтобы мы могли помочь. Я не думаю, что для получения минимума в строке должно потребоваться столько кода. Кроме того, тот факт, что вы используете 'NR' вместо' NF', заставляет меня думать, что этот код действительно не работает. – fedorqui

+0

@anubhava Я хочу передать результат awk в переменную bash lev. – Salsiccio

ответ

2

Есть несколько вещей неправильно с вашим сценарием. Возможно, вы можете понять, используя этот образец.

$ lev=$(awk 'NR==4{min=99999; 
      for(i=1;i<=NF;i++) 
        if($i < min) {min=$i; ix=i} 
      print ix}' file.txt) 
+0

Он отлично работает – Salsiccio

Смежные вопросы