Найти максимальные значения в колонне 1 Диапазон и печатный столбец2

Они определены для любого процесса, но они не обязаны существовать в каком-либо процессе (по общему правилу ).

POSIX придает значение ряду переменных окружения. Его следует рассматривать как словарь; тот факт, что переменная определена в POSIX, не означает, что она должна существовать (, если только это не указано в ее определении ), но если переменная присутствует в любой среде процесса, ее значение должно быть понято (и, для совместимых утилит, где это уместно, действовать )в соответствии с определением POSIX.

If the variables in the following two sections are present in the environment during the execution of an application or utility, they shall be given the meaning described below. Some are placed into the environment by the implementation at the time the user logs in; all can be added or changed by the user or any ancestor of the current process.

Как всегда, «помещение в среду» следует понимать как влияющее на соответствующие дочерние элементы дерева процессов (, созданные с помощью набора переменных ), глобальной среды не существует.

0
27.04.2020, 13:48
2 ответа

Ваш код работает хорошо, если вы измените ,на &&.

Но я думаю, что у вас тоже есть логическая ошибка. Разве $1>max1не должно быть скорее$2>line1(и то же самое для max2/line2)?

awk '
  320>$2 && $2>315 && $2>line1 {max1=$1;line1=$2}
  313>$2 && $2>307 && $2>line2 {max2=$1;line2=$2}
  END {printf " %s\t %s\t %s\t %s\n",max1,line1,max2,line2}
' file
1
19.03.2021, 02:25

Я вижу, что ответ pLumo действительно дает ваш образец вывода, но ваш вопрос касается нахождения максимальных значений в диапазоне столбца 1 ; пример вывода печатает максимальное значение в столбце 2 . Так что я думаю, что вы либо неправильно -сформулировали свой вопрос, либо свой образец вывода. Также, когда вы говорите «между» 320 и 315, включаются ли сами эти числа? Я предполагаю, что они есть в предложенном решении (, поэтому >=оператор ); Я использую next, чтобы игнорировать любые строки, в которых нет только 2 полей; Я инициализирую выбранные переменные с помощью BEGINв качестве хорошей практики.

awk 'BEGIN {max1=max2=line1=line2=0}
     NF!=2 {next}
     320>=$2 && $2>=315 && $1>max1 {max1=$1;line1=$2}
     313>=$2 && $2>=307 && $1>max2 {max2=$1;line2=$2}
     END {printf " %s\t %s\t %s\t %s\n",max1,line1,max2,line2}' file.name.here
1
19.03.2021, 02:25

Теги

Похожие вопросы