Я сравнил описанное поведение между 5 разными серверами, и эта проблема возникает только при соединении с одним конкретным сервером.
После проверки контрольной суммы md5 я уверен, что файлы идентичны.
Поскольку предупреждение ни на что не влияет, я решил скрыть это сообщение.
На данный момент я изменил сценарий резервного копирования на сервере, поэтому в случае любого использования ssh он сначала записывает вывод в файл с помощью:>> $BACKUP_LOGS_FILE 2>&1
в конце команды.
В самом конце скрипта я использую grep для фильтрации вывода:grep -v 'Connection to xxx.xxx.xxx.xxx closed by remote host.' $BACKUP_LOGS_FILE
Однако, если у кого-то есть какое-либо объяснение, что может быть причиной этого, не стесняйтесь добавлять свой ответ.
jq
solo escribe en stdout (o stderr ), por lo que necesita otro programa para dividir el flujo en diferentes archivos de registro.
Primero, enriquece el comando js
de @nwk con un campo de archivo de registro.
jq -c '(select(.type=="1") | {"logfile":.type},{fname:.fname}),
(select(.type=="3") | {"logfile":.type},{city:.city})' test.log
Puede canalizar esta salida a awk
, que puede recoger los nombres de archivo
jq -c '(select(.type=="1") | {"logfile":.type},{fname:.fname}),
(select(.type=="3") | {"logfile":.type},{city:.city})' test.log |
awk -F"\"" 'BEGIN {FPAT="[^{}:\"]+" }
$1=="logfile" {lf="type_"$2".txt"; next}
{print >> lf}'
Puede ser más fácil usar un lenguaje completo -aquí. Me gusta:
perl -MJSON -ne '
BEGIN{$j = JSON->new}
$j->incr_parse($_);
END{
for $i ($j->incr_parse) {
$t = delete($i->{type});
$out{$t}.= to_json($i). "\n";
}
for $t (keys %out) {
open OUT, ">", "type_$t.json" or die "type_$t.json: $!\n";
print OUT $out{$t};
}
}' < input.json
Я пришел сюда в поисках быстрого ответа, но мне не понравился ни один из них, потому что мне не нравилась идея делать отдельный запрос для каждого файла.
Вы можете использовать опцию select
из jq
с каким-нибудь nix для разделения json на отдельные файлы.
jq -r '.type' test.log | uniq | xargs -i bash -c "jq '. | select(.type==\"{}\" )' test.log > \"{}.json\""
Объяснение:
jq
, чтобы получить все поля, для которых вы хотите создать файлы uniq
делает список уникальным xargs
этот список bash -c
так что вы можете перенаправить каждый вызов на jq
в свой собственный файл jq
, чтобы выбрать из исходного файла журнала только те части данных, которые вам нужны, и записать их в отдельный файл. Это существенно автоматизирует процесс многократного вызова jq
файла