Você pode usar 2 grep para conseguir o que deseja. O interior grep
gerará a "lista" de correspondências para o kernel atual, uname -r
e a reversão anterior para ele. O exterior grep
dará a lista de kernels excluindo estes 2.
$ grep -v "$(grep -B 1 "$(uname -r)" list.txt)" list.txt
Exemplo
Para simular o que você tem, eu adicionei o conteúdo deles ao arquivo list.txt
.
$ cat list.txt
linux-image-3.2.0-49-generic
linux-image-3.2.0-51-generic
linux-image-3.2.0-52-generic
linux-image-3.2.0-53-generic
linux-image-3.2.0-54-generic
linux-image-3.2.0-55-generic
linux-image-3.2.0-56-generic
linux-image-3.2.0-57-generic
linux-image-3.2.0-58-generic
linux-image-3.2.0-59-generic
linux-image-3.2.0-60-generic
linux-image-3.2.0-61-generic
linux-image-3.2.0-63-generic
linux-image-3.2.0-64-generic
Agora vamos fingir que o comando uname -r
retorna esta string:
$ uname -r
3.2.0-60-generic
Então, quando eu executo este comando, eu obtenho uma lista dos kernels menos o uname -r
e a versão anterior a ele.
$ grep -v "$(grep -B 1 "3.2.0-60-generic" list.txt)" list.txt
linux-image-3.2.0-49-generic
linux-image-3.2.0-51-generic
linux-image-3.2.0-52-generic
linux-image-3.2.0-53-generic
linux-image-3.2.0-54-generic
linux-image-3.2.0-55-generic
linux-image-3.2.0-56-generic
linux-image-3.2.0-57-generic
linux-image-3.2.0-58-generic
linux-image-3.2.0-61-generic
linux-image-3.2.0-63-generic
linux-image-3.2.0-64-generic
Isso tudo assume que a lista de kernels em list.txt
está em um formato classificado.
Dicas adicionais
Se você tiver interesse, escrevi um A para este P & A intitulado: Como determinar programaticamente a versão mais alta do kernel RPM instalado? onde mostro como você pode analisar versões de kernels usando sort -V
.