2016-12-18 12 views
0

Привет У меня есть файл, как это (с п линиями):получить максимальное значение столбца

0.001 5.4e+08 
0.03 0.08 
0.5774 0.1 
93 9832 

теперь я хочу, чтобы прочитать максимальное значение каждого столбца. я пытался AWK так:

awk -v "max=0.2" -v "index=1" 'BEGIN{if (index>max) max=index} END {print max}' file 

и Asign выход переменной. только набрав команду AWK в оболочке дает мне эту ошибку:

awk: run time error: cannot command line assign to index 
    type clash or keyword 
    FILENAME="" FNR=0 NR=0 

Проблема в том, что файл имеет п-линии, и я зацикливание только по определенным линиям. Как я могу дать awk строку для работы и прочитать максимальное значение столбца этой строки?

+0

это делает, решение в том, что Я не должен использовать «index» в качестве имени переменной. – Tuni

+1

. Вы должны упомянуть об этом конкретном ограничении как часть вопроса, без него проблема является точной копией. – Inian

+0

Помимо проблем с синтаксисом, это был буквально последний вопрос, на который я ответил, [здесь] (http://stackoverflow.com/a/41202447/1072112). – ghoti

ответ

5

index() - это имя функции awk, выберите другое имя переменной, например idx.

Кроме того, чтобы напечатать максимальное значение «индекса» вам не нужно засеять макс с некоторой специальной стоимости, было бы просто:

$ awk -v idx=1 'NR==1 || $idx>max{max=$idx} END{print max}' file 
93 
+0

все в порядке, но если я делаю: AWK -v "макс = 0,001" -v "IDX = 1" 'BEGIN {если ($ IDX> макс) макс = $ IDX} END {печать макс}' CH4_p01a00242tf0300to0300.kg мой вывод: 0.001, тогда как он должен быть 93 – Tuni

+1

Ну, да, вы застряли в вычислении в разделе BEGIN, который выполняется до того, как ваш входной файл открывается, и то, что вы получаете в END, - это то, что у вас было до начала. –

+1

теперь я знаю, что использовать BEGIN и END, спасибо за помощь! – Tuni

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