Покопавшись в Plymouth, я думаю, что этот файл как-то связан с grub2. Содержимое файла читается как
if background_color 44,0,30,0; then
clear
fi
Цвет меню загрузки grub2 (red: 44, green:0, blue: 30, transparency: 0
), которое вы видите, если у вас установлено несколько ОС.
Но я до сих пор не знаю, что означает clear
и почему в нем есть утверждение if
.
Подход awk
:
$ awk '$1=="\"ip\":"{
ip=$2
}
$1=="\"country\":"{
c[ip]=$2
}
$1=="\"score\":" && s[ip]<$2{
s[ip]=$2
}
END{
for(ip in c){
print ip,c[ip],s[ip]
}
}' file
"86.72.0.0/14", "France", 1
"86.64.0.0/12", "France", 1,
"86.75.224.0/21", "France", 1
"86.75.227.72/32", "France", 7.1
"86.75.227.72", "France",
"86.75.224.0", "France", 1,
Или, если вам просто нужен IP-адрес с наибольшим количеством баллов и ничего больше:
$ awk '$1=="\"ip\":"{ip=$2}$1=="\"score\":" && score<$2{score=$2;sip=ip}END{print sip} ' file
"86.75.227.72/32"
$ jq -r '.history | max_by(.score) |.ip' file.json
86.75.227.72/32
При этом используется jq
для поиска записи в массиве .history
, которая имеет максимальное значение .score
. Как только это найдено, значение .ip
извлекается из найденной записи.
Небольшие вариации в форматах вывода, здесь с выводом IP-адреса, страны, названия компании в формате CSV (, если доступно ), и оценкой из массива .history
:
$ jq -r '.history[] | [.ip,.geo.country,.asns."15557".Company,.score] | @csv' file.json
"86.64.0.0/12","France",,1
"86.64.0.0/12","France",,1
"86.72.0.0/14","France",,1
"86.75.224.0/21","France",,1
"86.75.224.0/21","France","LDCOMNET, FR",1
"86.75.224.0/21","France",,1
"86.75.224.0/21","France","LDCOMNET, FR",1
"86.75.227.72/32","France","LDCOMNET, FR",7.1
"86.75.227.72/32","France","LDCOMNET, FR",1
И то же самое, но только с максимальным количеством очков:
$ jq -r '.history | max_by(.score) | [.ip,.geo.country,.asns."15557".Company,.score] | @csv' file.json
"86.75.227.72/32","France","LDCOMNET, FR",7.1