Qual é a melhor abordagem para converter a string contendo o intervalo de números em números em si? Esse formato é usado, por exemplo, na definição do intervalo de páginas a serem impressas. Eu defino, eu quero imprimir essas páginas "11-14,17,20" . Agora eu preciso escrever o script bash que irá alterar essa string na matriz de números: 11, 12, 13, 14, 17, 20
Ele deve ser capaz de trabalhar com strings que contenham números (mesmo com mais dígitos) e com ',' e '-'.
bash
bash-scripting
string
srnka
fonte
fonte
Respostas:
Isso faz isso em Perl:
Saída:
fonte
Aqui está uma solução usando
awk
:Isso resulta na seguinte saída:
fonte
next
? Copie e cole em seu lugar.Apenas bash:
Para sua saída solicitada:
IFS=,; echo ${numbers[*]}
fonte
${numbers[@]}
para imprimir todo o conteúdo da matriz.Se você tem
jot
do seu sistemaExemplo de uso de jot e sed é (não se esqueça nova linha caractere em seqüência de substituição!):
Se você digitar
echo jot
em vez de "jot" (e removars
chamada) você deve ver a seguinte saída:fonte
Essa é uma maneira meio lisp de fazer as coisas (exceto pelo fato de que bash não gosta de listas preguiçosas, então temos que definir um limite superior no número máximo de páginas; aqui eu escolhi 10000)
Com as páginas, você especifica o intervalo de páginas como na outra postagem. O loop for gera uma lista de números de páginas. Desses, o comando cut seleciona os que você quer.
fonte