<Anterior | Conteúdo | Próxima>
fmt - um formatador de texto simples
O fmt programa também dobra texto e muito mais. Ele aceita arquivos ou entrada padrão e executa a formatação de parágrafos no fluxo de texto. Basicamente, ele preenche e une linhas no texto, preservando as linhas em branco e o recuo.
Para demonstrar, vamos precisar de algum texto. Vamos tirar um pouco do fmt página de informações:
`fmt 'lê os argumentos FILE especificados (ou entrada padrão se nenhum for fornecido) e escreve na saída padrão.
Por padrão, linhas em branco, espaços entre palavras e recuo são
`fmt 'lê os argumentos FILE especificados (ou entrada padrão se nenhum for fornecido) e escreve na saída padrão.
Por padrão, linhas em branco, espaços entre palavras e recuo são
preservado na saída; linhas de entrada sucessivas com recuo diferente não são unidas; as guias são expandidas na entrada e introduzidas na saída.
`fmt 'prefere quebrar linhas no final de uma frase e tenta evitar quebras de linha após a primeira palavra de uma frase ou antes da última palavra de uma frase. Uma "quebra de frase" é definida como o final de um parágrafo ou uma palavra que termina em qualquer um de `.?! ', Seguido por dois espaços ou final de linha, ignorando quaisquer parênteses ou aspas. Como o TeX, `fmt 'lê" parágrafos "inteiros antes de escolher quebras de linha; o algoritmo é uma variante daquele fornecido por Donald E. Knuth e Michael F. Plass em "Quebrando Parágrafos em Linhas",
`Software - Practice & Experience '11, 11 (novembro de 1981), 1119-1184.
preservado na saída; linhas de entrada sucessivas com recuo diferente não são unidas; as guias são expandidas na entrada e introduzidas na saída.
`fmt 'prefere quebrar linhas no final de uma frase e tenta evitar quebras de linha após a primeira palavra de uma frase ou antes da última palavra de uma frase. Uma "quebra de frase" é definida como o final de um parágrafo ou uma palavra que termina em qualquer um de `.?! ', Seguido por dois espaços ou final de linha, ignorando quaisquer parênteses ou aspas. Como o TeX, `fmt 'lê" parágrafos "inteiros antes de escolher quebras de linha; o algoritmo é uma variante daquele fornecido por Donald E. Knuth e Michael F. Plass em "Quebrando Parágrafos em Linhas",
`Software - Practice & Experience '11, 11 (novembro de 1981), 1119-1184.
Vamos copiar este texto em nosso editor de texto e salvar o arquivo como fmt-info.txt. Agora, digamos que desejamos reformatar este texto para caber em uma coluna de cinquenta caracteres de largura. Poderíamos fazer isso processando o arquivo com fmt e -w opção:
[me @ linuxbox ~] $ fmt -w 50 fmt-info.txt | cabeça
`fmt 'lê os argumentos FILE especificados (ou entrada padrão se
nenhum é fornecido) e grava na saída padrão.
Por padrão, linhas em branco, espaços entre palavras e recuo são
preservado na saída; linhas de entrada sucessivas com recuo diferente não são unidas; as guias são expandidas na entrada e introduzidas na saída.
[me @ linuxbox ~] $ fmt -w 50 fmt-info.txt | cabeça
`fmt 'lê os argumentos FILE especificados (ou entrada padrão se
nenhum é fornecido) e grava na saída padrão.
Por padrão, linhas em branco, espaços entre palavras e recuo são
preservado na saída; linhas de entrada sucessivas com recuo diferente não são unidas; as guias são expandidas na entrada e introduzidas na saída.
Bem, esse é um resultado estranho. Talvez devêssemos realmente ler este texto, uma vez que explica o que está acontecendo:
Por padrão, as linhas em branco, os espaços entre as palavras e o recuo são preservados na saída; linhas de entrada sucessivas com recuo diferente não são unidas; as guias são expandidas na entrada e introduzidas na saída.
então, fmt está preservando o recuo da primeira linha. Felizmente, fmt fornece uma opção para corrigir isso:
[me @ linuxbox ~] $ fmt -cw 50 fmt-info.txt
`fmt 'lê os argumentos FILE especificados (ou entrada padrão se nenhum for fornecido) e escreve na saída padrão.
[me @ linuxbox ~] $ fmt -cw 50 fmt-info.txt
`fmt 'lê os argumentos FILE especificados (ou entrada padrão se nenhum for fornecido) e escreve na saída padrão.
Por padrão, as linhas em branco, os espaços entre as palavras e o recuo são preservados na saída; linhas de entrada sucessivas com recuo diferente não são unidas; as guias são expandidas na entrada e introduzidas na saída.
`fmt 'prefere quebrar linhas no final de uma frase e tenta evitar quebras de linha após a primeira palavra de uma frase ou antes do
última palavra de uma frase. Uma "quebra de frase" é definida como o final de um parágrafo ou uma palavra que termina em '.?!', Seguida por dois espaços ou final de linha, ignorando qualquer
entre parênteses ou citações. Como TeX,
`fmt 'lê" parágrafos "inteiros antes de escolher quebras de linha; o algoritmo é uma variante de
aquele dado por Donald E. Knuth e Michael F. Plass em "Quebrando Parágrafos em Linhas",
`Software - Prática e Experiência '11, 11
(Novembro de 1981), 1119-1184.
Por padrão, as linhas em branco, os espaços entre as palavras e o recuo são preservados na saída; linhas de entrada sucessivas com recuo diferente não são unidas; as guias são expandidas na entrada e introduzidas na saída.
`fmt 'prefere quebrar linhas no final de uma frase e tenta evitar quebras de linha após a primeira palavra de uma frase ou antes do
última palavra de uma frase. Uma "quebra de frase" é definida como o final de um parágrafo ou uma palavra que termina em '.?!', Seguida por dois espaços ou final de linha, ignorando qualquer
entre parênteses ou citações. Como TeX,
`fmt 'lê" parágrafos "inteiros antes de escolher quebras de linha; o algoritmo é uma variante de
aquele dado por Donald E. Knuth e Michael F. Plass em "Quebrando Parágrafos em Linhas",
`Software - Prática e Experiência '11, 11
(Novembro de 1981), 1119-1184.
Muito melhor. Adicionando o -c opção, agora temos o resultado desejado.
fmt tem algumas opções interessantes:
Tabela 21-3: Opções fmt
Descrição da Opção
Descrição da Opção
-c Operar em margem da coroa modo. Isso preserva o recuo das duas primeiras linhas de um parágrafo. As linhas subsequentes são alinhadas com o recuo da segunda linha.
-p corda Formate apenas as linhas que começam com o prefixo corda. Após a formatação, o conteúdo de corda são prefixados a cada linha reformatada. Esta opção pode ser usada para formatar texto nos comentários do código-fonte. Por exemplo, qualquer linguagem de programação ou arquivo de configuração que usa um caractere “#” para delinear um comentário pode ser formatado especificando -p '#' para que apenas os comentários sejam formatados. Veja o exemplo abaixo.
-s Modo Split-only. Neste modo, as linhas só serão divididas para caber na largura da coluna especificada. Linhas curtas não serão unidas para preencher linhas. Este modo é útil ao formatar texto como código onde a junção não é desejada.
-u Executa espaçamento uniforme. Isso se aplicará à tradicional “máquina de escrever-
estilo ”formatação do texto. Isso significa um único espaço entre as palavras e dois espaços entre as frases. Este modo é útil para remover a “justificação”, ou seja, texto que foi preenchido com espaços para forçar o alinhamento nas margens esquerda e direita.
-w largura Formate o texto para caber em uma coluna largura caracteres de largura. O padrão é 75 caracteres. Observação: fmt na verdade, formata as linhas um pouco mais curtas do que a largura especificada para permitir o equilíbrio da linha.
O -p opção é particularmente interessante. Com ele, podemos formatar partes selecionadas de um arquivo, desde que todas as linhas a serem formatadas comecem com a mesma sequência de caracteres. Muitas linguagens de programação usam o sinal de libra (#) para indicar o início de um comentário e, portanto, podem ser formatadas usando esta opção. Vamos criar um arquivo que simula um programa que usa comentários:
[me @ linuxbox ~] $ cat> fmt-code.txt
# Este arquivo contém código com comentários.
# Esta linha é um comentário.
# Seguido por outra linha de comentário.
# E outro.
Por outro lado, é uma linha de código. E outra linha de código.
E outro.
[me @ linuxbox ~] $ cat> fmt-code.txt
# Este arquivo contém código com comentários.
# Esta linha é um comentário.
# Seguido por outra linha de comentário.
# E outro.
Por outro lado, é uma linha de código. E outra linha de código.
E outro.
Nosso arquivo de amostra contém comentários que começam com a string “#“ (a # seguido por um espaço) e linhas de “código” que não começam. Agora, usando fmt, podemos formatar os comentários e deixar o código intocado:
[me @ linuxbox ~] $ fmt -w 50 -p '#' fmt-code.txt
# Este arquivo contém código com comentários.
# Esta linha é um comentário. Seguido por outro
# linha de comentário. E outro.
Por outro lado, é uma linha de código. E outra linha de código.
E outro.
[me @ linuxbox ~] $ fmt -w 50 -p '#' fmt-code.txt
# Este arquivo contém código com comentários.
# Esta linha é um comentário. Seguido por outro
# linha de comentário. E outro.
Por outro lado, é uma linha de código. E outra linha de código.
E outro.
Observe que as linhas de comentário adjacentes são unidas, enquanto as linhas em branco e as linhas que não começam com o prefixo especificado são preservadas.