Я пытаюсь понять, как awk
работает с переменными в if
операторах.
Вот текстовый файл игрушки:
$ cat myscript.sh
#! /bin/bash
set -eu
set -o pipefail
IFS=$'\n\t'
for arg in $@; do
echo "do something with file $arg"
done
Теперь я хочу awk
напечатать самую длинную строку в файле.
Я думал сделать это:
$ awk '{max = 0}{if (length($0) > max) {max = length($0)} else {}} END {print max}' myscript.sh
Но это печать длины последней строки.
Однако, когда я запускаю следующее:
awk '{if (length($0) > max) {max = length($0)} else {}}END{print max}' myscript.sh
Результат верен и печатает правильную длину 35
.
Я не могу понять, почему, когда я задаю переменную max
перед оператором if
, условие не распознается.
Я уверен, что для awk-gurus
есть простое объяснение, но лично я его не вижу.
Спасибо