No puede (instalar fácilmente )un RPM en Debian. Debian usa dpkg
; RPM tiene su propia base de datos de paquetes y no sabe nada de lo que haya instalado en Debian. rpm
está disponible en Debian, pero es principalmente para manipular paquetes RPM, no para instalarlos.
Para Java en particular, debe usar java-package
en su lugar para convertir el instalador .bin
que puede descargar de Oracle; vea mi respuesta a su pregunta anterior .
С GNU awk:
$ gawk -F' \\(\\) ' '
/gold\/tool/ {
items = $2; ids="";
while(match(items,/([0-9]+)\/gold\/tool/,a)) {
ids = ids ";" a[1];
items = substr(items,RSTART+RLENGTH+1)
}
print $1 ids
}' file
Player: 9.8.7.6.5.4.3.2.1;10;15
Player: 7.6.5.4.3.2.1.9.8;36
Player: 6.5.4.3.2.1.9.8.7;40
Player: 5.4.3.2.1.9.8.7.6;50;55
Player: 4.3.2.1.9.8.7.6.5;10
Вдохновлен steeldriver, возможно немного проще:
gawk '{
g=0
for (i=5; i<=NF; i++) {
if (match($i, /^([0-9]+)\/gold/, a)) {
if (g++ == 0) printf "%s %s", $1, $2
printf ";%s", a[1]
}
}
if (g > 0) printf "\n"
}' file
GNU использует расширенный режим регулярных выражений -E
, чтобы упростить написание регулярных выражений. Используемый подход заключается в немедленном отбрасывании любых неинтересных линий, то есть тех, которые не содержат золота. После этого мы удаляем все не золотые медали, удаляя только цифры перед золотой медалью:
$ sed -Ee '
s/\s*[(][)]\s*/\n/
\|\n.*[0-9]/gold/|!d
:a
/\n$/!{
\|\n([0-9]+)/gold/\S+\s*|{
s//;\1\n/;ba
}
s|\n\S+\s*|\n|;ba
}
s/(^\s*|\s*$)//g
' file.log
Perl делает задачу тривиальной:
$ perl -F'[(][)]' -lane '
(my $p = $F[0]) =~ s/(^\s*|\s*$)//g;
my @A = $F[1] =~ m[\D(\d+)/gold/]g;
print join ";", $p, @A if @A;
' file.log
Результаты:
Player: 9.8.7.6.5.4.3.2.1;10;15
Player: 7.6.5.4.3.2.1.9.8;36
Player: 6.5.4.3.2.1.9.8.7;40
Player: 5.4.3.2.1.9.8.7.6;50;55
Player: 4.3.2.1.9.8.7.6.5;10