Я пишу сценарий awk, который принимает несколько столбцов ввода в текстовом файле и распечатывает наибольшее значение в каждом столбце.
Вход:
$cat numbers
10 20 30.3 40.5
20 30 45.7 66.1
40 75 107.2 55.6
50 20 30.3 40.5
60 30 45.O 66.1
70 1134.7 50 70
80 75 107.2 55.6
Выход:
80 1134.7 107.2 70
Сценарий:
BEGIN {
val=0;
line=1;
}
{
if( $2 > $3 )
{
if( $2 > val )
{
val=$2;
line=$0;
}
}
else
{
if( $3 > val )
{
val=$3;
line=$0;
}
}
}
END{
print line
}
Токовый выход:
60 30 45.O 66.1
Что я делаю не так первый скрипт на awk
======= РЕШЕНИЕ ======
END {
for (i = 0; ++i <= NF;)
printf "%s", (m[i] (i < NF ? FS : RS))
}
{
for (i = 0; ++i <= NF;)
$i > m[i] && m[i] = $i
}
Спасибо за помощь
$2 > $3
и$3 > val
тесты в вашем коде; они никак не связаны с описанием проблемы (поиск наибольшего значения в каждом столбце). Попробуйтеawk '{print $1 $3;}' < numbers
увидеть, что именно означают пронумерованные переменные. - person sarnold   schedule 09.12.2011