Shell script regex ou cut - ajuda

Em um shell script, preciso saber qual o nome do arquivo com extensão appimage dentro de um arquivo zip.

zip de exemplo:
https://github.com/balena-io/etcher/releases/download/v1.5.121/balena-etcher-electron-1.5.121-linux-x64.zip

Usando esse comando
$nome_unziped=unzip -l balena-etcher-electron-1.5.121-linux-x64.zip | grep -m1 -i .appimage$
retorna isso:

96119860 2021-07-05 15:35 balenaEtcher-1.5.121-x64.AppImage

eu preciso que $nome_unziped tenha esse valor

$nome_unziped=balenaEtcher-1.5.121-x64.AppImage

Como obter esse valor via shell script?

Pode usar o cut ou outro comando

Exemplo

cut -d " " -f 4

2 curtidas

Além do que o @swatquest falou, outra opção é o comando zipinfo que (ao menos no Arch Linux) vem junto do unzip:

zipinfo -1 arquivo.zip | grep -m1 -i '\.appimage$'

(mudei um pouco o padrão porque, tecnicamente, no grep e outros interpretadores de expressões regulares, . significa “qualquer caractere”, então um arquivo chamado “Readme-AppImage” poderia ser pego também.)

Aliás, você está usando Perl? A sintaxe é pra ser nome_unzipped=$(zipinfo -1 ...); echo "$nome_unzipped", só em Perl que $variavel é usado tanto para dar quanto para extrair uma variável.

3 curtidas