Como usar o printf em bash

Shutterstock / Gilangtristian

A formatação de texto é um tópico interessante, especialmente quando se trata de Bash. Embora existam muitas ferramentas para formatar texto, printf é único e universal. Aprenda tudo sobre printf no Bash para formatar seu texto da maneira certa!

índice

  1. Usando printf no Bash
  2. Sintaxe: printf
  3. Exemplos: printf
  4. Conclusão

Usando printf no Bash

C++ e outros desenvolvedores já estarão familiarizados com printf como uma ótima maneira de formatar saída de texto durante a programação. Ter a mesma ferramenta disponível no Bash é uma grande vantagem. printf permite controlar e produzir formatos de saída complexos, da maneira que você quiser. A página de manual printf define printf como uma ferramenta de 'formatação e impressão de dados', que é exatamente o que é e faz.

Por exemplo, você gostaria de imprimir um número decimal com um comprimento de exatamente 3 bytes (ou caracteres/números) para a parte inteira (a parte antes do ponto decimal ou vírgula, dependendo de onde você mora no mundo e como local você é) e 2 bytes (ou caracteres/números) para a parte decimal do número? Não tem problema , printf pode fazer isso e muito mais. Você também pode enviar o texto para uma coluna específica na tela, etc.

Embora a sintaxe printf possa parecer confusa ou complexa para um novo desenvolvedor, na verdade é bem simples. Há apenas um conjunto limitado de caracteres de formatação comumente usados ​​que podem ser usados ​​em uma definição de saída printf. Vamos dar uma olhada nestes primeiro.

Sintaxe: printf

Estes são os idiomas de sintaxe printf mais usados ​​para formatação de números:

 %d ou %ia inteiro decimal com sinal %u um inteiro decimal sem sinal %fa número decimal em ponto flutuante %ea número de notação científica %g permitirá que printf use %e ou %f, o que for menor %ca caractere único %sa sequência de caracteres % % para o literal '%'

Em seguida, é bom saber como especificar opções específicas em relação a esses idiomas de formato. O formato para especificar opções para estes é o seguinte:

 %[flag(s)][width][.precision][length]number_formatting_idiom

Exemplos: printf

Então, por exemplo, para ter um float com uma largura de 3 e uma precisão de 2, você especificaria:

 %3.2f

Vejamos um exemplo:

 printf "%3.2fn" "100.304" 

Simples e fácil. Observe que poderíamos ter usado uma variável em vez de "100.304" :

 VAR1=100.304 printf "%3.2fn" ${VAR1} 

Observe também como adicionamos uma nova linha usando uma sequência de nova linha de arquivo n . Para obter uma lista completa de sequências interpretadas disponíveis, consulte man printf . Os mais comuns são n para nova linha, t para cartão e \\ para barra invertida.

No formato de opções acima também vimos como podemos especificar sinalizadores. Um número limitado de sinalizadores comuns está disponível:

 - Justificar texto à esquerda (justificar à direita é o padrão) + Força o uso de um sinal, mesmo se positivo '' Um espaço é inserido se nenhum sinal for usado 0 Preencha à esquerda o número com zeros em vez de espaços quando o preenchimento for Especificadas

Assim, por exemplo, podemos ter:

 VAR1=-100.304 VAR2=100.304 printf "% 3.2ft%+3.2fn" ${VAR1} ${VAR2} 

Aqui usamos duas variáveis ​​e separamos a saída de duas guias usando duas sequências t de paradas de tabulação. Também colocamos um espaço (como um sinalizador) entre a definição % e a largura. Isso fez com que o número negativo em VAR1 impresso com um sinal negativo. Se o número fosse positivo, nenhum sinal seria impresso e, em vez disso, um espaço seria impresso na mesma posição.

Finalmente, usamos o arquivo + sinalizador e, de fato, nosso número é gerado com um sinal de início + , independentemente de o número já ser positivo e, portanto, (normalmente) nenhum sinal será impresso.

Então, como podemos ter certeza de que temos zeros ou espaços à esquerda, enquanto temos um comprimento específico? Primeiro, precisamos ter certeza de que a largura de nossa definição é maior que o conteúdo da variável e, segundo, podemos usar o sinalizador 0 para exibir zeros à esquerda:

 VAR1=-100.304 VAR2=100.304 printf "% 13.2fn%013.2fn%13.2f" ${VAR1} ${VAR2} ${VAR1} 

Neste exemplo, imprimimos 3 linhas, separadas duas vezes pela n sequência de linhas. Percebemos imediatamente que, se não houver nova linha no final da saída, nosso prompt Bash retornará especificamente no final de nossa terceira linha de saída.

Este pode não ser um formato bonito ou prático em modo interativo no terminal, mas de dentro de um script (pense, por exemplo, em uma sequência como 1...2...3... que constrói passo a passo no tela conforme você percorre o código) isso pode ser muito útil.

Na segunda linha de saída, usamos o 0 para indicar que gostaríamos de usar zeros à esquerda para VAR2 . Na verdade, a saída produz zeros à esquerda, até o comprimento definido.

Na primeira linha de saída, inserimos um espaço enquanto na terceira linha de saída (ambos imprimindo o arquivo variável VAR1 ) não. A saída é a mesma, que é a única peculiaridade que encontrei ao trabalhar com printf ; seria de esperar que houvesse um caractere extra dada a definição do sinalizador de espaço printf. Isso permanece o mesmo, mesmo se usarmos zeros à esquerda. Permanece o mesmo mesmo se um comprimento não for especificado.

Portanto, a usabilidade da bandeira espacial pode, em alguns casos (números negativos), ser limitada. Este não é o caso para números positivos:

 VAR1=100.304 printf "% fn%0fn" ${VAR1} ${VAR1} 

Neste caso (números positivos), o banner de espaço funciona como esperado e no primeiro caso é inserida uma saída de espaço adicional VAR1 .

Conclusão

Usar printf de scripts Bash ou da linha de comando pode produzir uma saída limpa e bem definida. Se você dimensionar as variáveis ​​corretamente (e talvez verificar o intervalo com certeza), o uso de printf fornecerá um método flexível de formatar a saída (e o layout geral da tela para aplicativos maiores) da maneira que desejar.

Neste artigo, veremos as expressões idiomáticas de formatação de número mais usadas, como definir a largura da parte inteira e decimal dos números e revisaremos os sinalizadores mais usados ​​em printf. Divirta-se imprimindo dados bem formatados com printf!

  • [Atualizado] O preço do Xbox Live Gold está subindo e o Game Pass parece melhor do que nunca
  • Como iniciar um bate-papo secreto criptografado no Telegram

descubra mais conteúdo

Google Pixel Watch também tem detecção de queda, mas não até o próximo ano

As melhores xícaras de café aquecidas de 2022

Como automatizar seu iPhone com base na hora, atividade ou localização

"Isso deve ter sido antes do meu tempo"

Por que a NASA enviou Snoopy para a Lua? – Revisão geek

O que é uma carga fantasma?

Deixe uma resposta Cancelar resposta

O que é printf no Bash?

O comando bash printf é uma ferramenta usada para criar saída formatada . É um shell embutido, semelhante à função printf() em C/C++, Java, PHP e outras linguagens de programação. O comando permite imprimir texto formatado e variáveis ​​na saída padrão.

Como imprimo uma declaração no Bash?

Normalmente, ao escrever scripts bash, usamos echo para imprimir na saída padrão.

Caracteres com escape de barra invertida

  1. \\\\ – Exibe um caractere de barra invertida.
  2. \\b – Exibe um caractere de retrocesso.
  3. \\n – Exibe uma nova linha.
  4. \\r – Exibe um retorno de carro.
  5. \\t – Exibe uma guia horizontal.
  6. \\v – Exibe uma guia vertical.

O que $() significa no Bash?

Exemplo de substituição de comando usando $() no Linux:

Novamente, $() é uma substituição de comando, o que significa que “ reatribui a saída de um comando ou mesmo vários comandos ; ele literalmente conecta a saída do comando em outro contexto” (Fonte).

O que significa printf no Linux?

imprime uma string formatada para Descrição. printf imprime uma string formatada na saída padrão . Suas raízes estão na linguagem de programação C, que usa uma função com o mesmo nome. É uma maneira prática de produzir saída formatada com precisão a partir de argumentos numéricos ou textuais.

Ir arriba