как извлечь определенные элементы из файла

не используйте переменную.

awk допускает множественный ввод файла программы.

генерировать временный файл awk для каждого случая, например:

для file1.csvсоздать temporary.awkпрограмму (file1.awk)

function check() { if ( $1 == ""180817CR0003988" ) return "blue" ; else "back" }

дляfileX.csv

function check() { if ( $9 == ""unix.stackexchange.com" ) return "grey" ; else "blue" }

затем при вызове

color=check() ;

awk вызывается как

awk -f temporary.awk -f long.awk...

Ваше заявление awk большое, я предлагаю поместить его в файл с именем long.awk.

-2
06.02.2021, 12:19
2 ответа
awk 'NR > 1 && (max == "" || $NF > max) { max = $NF } END { print max }' file

Это считывает ваш файл, и всякий раз, когда последнее поле любой строки, кроме первой строки (, которая является строкой заголовка ), является числовым значением, большим, чем любое из виденных ранее, это значение запоминается в переменная max. Значение также запоминается, если ранее значение не запоминалось.

В конце выводится значение переменной max, которое является максимальным значением, наблюдаемым в последнем поле любой строки (, кроме первой ).

Предполагается, что столбец classвсегда находится в конце каждой строки.

Специальные переменные NFи NRпредставляют собой количество полей в текущей записи и количество прочитанных записей соответственно. Значение $NF— это значение последнего поля в текущей записи.

Чтобы получить всю строку с наибольшим числом в последнем столбце, необходимо внести всего пару небольших изменений в приведенный выше код, чтобы также запомнить и распечатать соответствующие данные:

awk 'NR > 1 && (max == "" || $NF > max) { max = $NF; line = $0 } END { print line }' file
3
18.03.2021, 22:32

sort выполняет эту функцию, определяя положение ключа. Вы можете попробовать это:

sort --key=3 file
-2
18.03.2021, 22:32

Теги

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