AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 429298
Accepted
Paul
Paul
Asked: 2018-03-10 09:03:45 +0800 CST2018-03-10 09:03:45 +0800 CST 2018-03-10 09:03:45 +0800 CST

Como posso expandir uma lista de letras/números em cinzas?

  • 772

No busybox, o shell padrão é o ash, então alguns truques familiares no bash não estão disponíveis. Uma coisa que eu gostaria de fazer é expandir uma lista de letras, como {a..z}, que se expandiria para a b c d e f g h i j k l m n o p q r s t u v w x y zbash. Existe outra maneira de fazer essa cinza?

busybox brace-expansion
  • 3 3 respostas
  • 1007 Views

3 respostas

  • Voted
  1. Kusalananda
    2018-05-20T07:55:20+08:002018-05-20T07:55:20+08:00

    O ashshell não oferece suporte a expansões de colchetes.

    Usando Perl, você poderia fazer

    perl -e 'print join("\n",a..z), "\n"'
    

    onde o primeiro \n(em join()) pode ser substituído pelo delimitador de sua escolha.

    Se você tiver o jotutilitário disponível,

    jot -c - a z
    
    • 2
  2. Best Answer
    Stéphane Chazelas
    2019-04-30T00:18:36+08:002019-04-30T00:18:36+08:00

    POSIXly (e com busybox) e em sistemas baseados em ASCII (acho que o busybox nunca foi encontrado em sistemas EBCDIC):

    letters() { awk 'BEGIN{for(i=97;i<123;i++)printf "%c\n", i}'; }
    

    Expandiria para essa lista de letras, uma por linha, supondo que você não tenha modificado $IFS,

    cmd $(letters)
    

    seria uma maneira de passar essa lista como argumentos separados para cmd. Como você faria com ksh93// zsh' bashs cmd {a..z}.

    Isso dificilmente é uma melhoria sobre

    letters() { printf '%s\n' a b c d e f g h i j k l m n o p q r s t u v w x y z; }
    

    no entanto. Para poder fazer o equivalente a foo{a..z}bar, você pode definir a:

    letters() { printf "${1-%s\n}" a b c d e f g h i j k l m n o p q r s t u v w x y z; }
    

    em vez disso e chame-o como:

    cmd $(letters 'foo%sbar\n')
    

    Você pode expandir esse tipo de abordagem fazendo algo como:

    format() { awk -v format="$1" '{printf format, $0}' ;}
    

    E então faça:

    $ seq 97 100 | format 'foo%cbar\n'
    fooabar
    foobbar
    foocbar
    foodbar
    
    $ seq 4 | format '%04d\n'
    0001
    0002
    0003
    0004
    

    (embora o último também possa ser escrito seq -w 0004)

    seqnão é um comando POSIX, mas busyboxvem com ele.

    Observe que o busybox shé baseado ashpor padrão, mas pode, alternativamente, ser configurado no momento da compilação para usar um hushshell baseado em que suporta expansão de colchetes. Mas isso é apenas o estilo csh {a,b}, não o estilo zsh {1..10}, {a..z}ou as formas mais avançadas encontradas em ksh93/zsh/bash.

    • 2
  3. Daniele Testa
    2022-03-20T08:44:10+08:002022-03-20T08:44:10+08:00

    Se a instalação do Busybox vier com o hushshell, você poderá usá-lo. Ele suporta expansões de cintas.

    • 1

relate perguntas

  • Gerenciador de pacotes para Busybox

  • Desde qual versão o busybox ash construído com ASH_BASH_COMPAT inclui suporte a array?

  • Como fazer o mkinitcpio busybox ash para source /etc/profile?

  • Clone um dispositivo de bloco usando 'cat'

  • a reinicialização do busysbox não funciona no script de inicialização

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve