Я бы предложил использовать опцию "-q -o "BatchMode=yes"
", а также использовать аутентификацию с открытым ключом.
Также подумайте об одиночных кавычках в команде, которую вы хотите запустить на удаленном сервере, чтобы избежать любых проблем, связанных с возможной локальной интерпретацией данной команды.
Например: ssh -q -o "BatchMode=yes" user@server 'ls -al'
Это довольно распространенная техника (вложенный ssh). Нет проблем с реализацией этого.
Потому что у вас есть next
в блоке с условием FILENAME != f && $2 ~ /[0-9]+/
. Эта строка thr
не соответствует этому условию, поэтому попадает в блок «каждая строка». Там $1 нет в a
, поэтому вводится блок else
и печатается строка.
Я уверен, что вы смогли бы понять это сами, если бы просто использовали разумные отступы, чтобы вы действительно видели свою программу:
awk -F':' -vf=main '
FILENAME == f {m = $0}
FILENAME != f && $2 ~ /[0-9]+/ {
if ($2 ~ /[0-9]+/ && (!($1 in a) || $3 > a[$1])) {
a[$1] = $3
b[$1] = $0
}
next
}
{
if (($1 in a) && (a[$1] > $3)) {
print b[$1]":updated:"m
delete b[$1]
} else
print
}
' file* main