Este é o comando trposix que pode ser executado no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS
PROGRAMA:
NOME
tr - traduzir caracteres
SINOPSE
tr [−c | −C] [-S] string1 string2
tr-s [−c | −C] string1
tr-d [−c | −C] string1
tr -ds [−c | −C] string1 string2
DESCRIÇÃO
A tr utilitário deve copiar a entrada padrão para a saída padrão com substituição ou
exclusão de caracteres selecionados. As opções especificadas e o string1 e string2
operandos devem controlar as traduções que ocorrem durante a cópia de caracteres e
elementos de agrupamento de personagens.
OPÇÕES
A tr utilitário deve estar em conformidade com o volume de Definições de Base de POSIX.1‐2008, Seção 12.2,
Utilidade Sintaxe orientações.
As seguintes opções devem ser suportadas:
-c Complementa o conjunto de valores especificado por string1. Veja a DESCRIÇÃO ESTENDIDA
seção.
−C Complementa o conjunto de caracteres especificado por string1. Veja o EXTENDED
Seção DESCRIÇÃO.
-d Exclua todas as ocorrências de caracteres de entrada que são especificados por string1.
-S Substitua ocorrências de caracteres repetidos por um único caractere, conforme descrito
na seção DESCRIÇÃO ESTENDIDA.
OPERANDOS
Os seguintes operandos devem ser suportados:
string1, string2
Strings de controle de tradução. Cada string deve representar um conjunto de caracteres para
ser convertido em uma série de caracteres usados para a tradução. Para
descrição detalhada de como as strings são interpretadas, consulte EXTENDED
Seção DESCRIÇÃO.
STDIN
A entrada padrão pode ser qualquer tipo de arquivo.
INPUT ARQUIVOS
Nenhum.
MEIO AMBIENTE VARIÁVEIS
As seguintes variáveis de ambiente devem afetar a execução de tr:
GRANDE Forneça um valor padrão para as variáveis de internacionalização que não estão definidas ou
nulo. (Veja o volume de Definições de Base de POSIX.1‐2008, Seção 8.2,
Internacionalização Variáveis pela precedência de internacionalização
variáveis usadas para determinar os valores das categorias de local.)
LC_ALL Se definido como um valor de string não vazio, substitui os valores de todos os outros
variáveis de internacionalização.
LC_COLLATE
Determine a localidade para o comportamento de expressões de intervalo e equivalência
classes.
LC_CTYPE Determine o local para a interpretação de sequências de bytes de dados de texto
como caracteres (por exemplo, caracteres de byte único em oposição a caracteres de bytes múltiplos em
argumentos) e o comportamento das classes de personagens.
LC_MESSAGES
Determine a localidade que deve ser usada para afetar o formato e o conteúdo do
mensagens de diagnóstico gravadas no erro padrão.
NLSPAT Determine a localização dos catálogos de mensagens para o processamento de LC_MESSAGES.
ASSÍNCRONO EVENTOS
Padrão.
STDOUT
A tr saída deve ser idêntica à entrada, com exceção do especificado
transformações.
STDERR
O erro padrão deve ser usado apenas para mensagens de diagnóstico.
SAÍDA ARQUIVOS
Nenhum.
ESTENDIDO DESCRIÇÃO
Os operandos string1 e string2 (se especificado) define duas matrizes de caracteres. o
construções na lista a seguir podem ser usadas para especificar caracteres ou um único caractere
elementos de agrupamento. Se qualquer uma das construções resultar em elementos de agrupamento de vários caracteres,
tr deve excluir, sem um diagnóstico, os elementos de vários caracteres do resultado
matriz.
personagem Qualquer personagem não descrito por uma das convenções abaixo deve representar
si.
\octal As sequências octais podem ser usadas para representar caracteres com valores codificados específicos.
Uma sequência octal deve consistir em um seguido pelo mais longo
sequência de caracteres de um, dois ou três dígitos octais (01234567). A sequência
deve fazer com que o valor cuja codificação é representada por um, dois ou três -
dígito octal inteiro a ser colocado na matriz. Os caracteres multibyte exigem
múltiplas sequências de escape concatenadas deste tipo, incluindo as principais
para cada byte.
\personagem
o - sequências de escape no volume Definições de base de POSIX.1‐2008,
mesa 5-1, fuga Seqüências e Associado Opções ('\\', '\uma', '\ b', '\ f',
'\ n', '\ r', '\ t', '\ v') deve ser suportado. Os resultados do uso de qualquer outro
caractere, diferente de um dígito octal, seguindo o não são especificados.
Além disso, se não houver nenhum caractere seguindo o , os resultados são
não especificado.
c-c No local POSIX, esta construção deve representar o intervalo de agrupamento
elementos entre os pontos finais do intervalo (contanto que nenhum dos pontos finais seja octal
seqüência do formulário \octal), inclusive, conforme definido pela sequência de intercalação.
Os caracteres ou elementos de agrupamento no intervalo devem ser colocados na matriz
na seqüência ascendente de intercalação. Se o segundo ponto final precede o início
ponto final na sequência de intercalação, não é especificado se o intervalo de
os elementos de agrupamento estão vazios ou esta construção é tratada como inválida. Em localidades
diferente da localidade POSIX, essa construção tem um comportamento não especificado.
Se um ou ambos os pontos finais do intervalo forem sequências octais da forma \octal,
isto deve representar a faixa de valores codificados específicos entre as duas faixas
terminais, inclusive.
[:classe:] Representa todos os caracteres pertencentes à classe de caracteres definida, conforme definido
pela configuração atual do LC_CTYPE categoria de localidade. O seguinte personagem
nomes de classes serão aceitos quando especificados em string1:
alnum em branco dígito diminuir ponto superior
alfa controle gráfico impressão espaço xdígito
Além disso, as expressões de classes de caracteres da forma [:nome:] deverá ser
reconhecido nos locais onde o nome palavra-chave recebeu um classe de caracteres
definição no LC_CTYPE categoria.
Quando ambos -d e -S opções são especificadas, qualquer um dos nomes de classes de caracteres
serão aceitos em string2. Caso contrário, apenas nomes de classes de caracteres diminuir or
superior são válidos em string2 e então apenas se a classe de personagem correspondente
(superior e diminuir, respectivamente) é especificado na mesma posição relativa em
string1. Tal especificação deve ser interpretada como uma solicitação de caso
conversão. Quando [:diminuir:] aparece em string1 e [:superior:] aparece em string2,
as matrizes devem conter os caracteres do tupper mapeamento no LC_CTYPE
categoria da localidade atual. Quando [:superior:] aparece em string1 e [:diminuir:]
aparece em string2, as matrizes devem conter os caracteres do abaixar
mapeamento no LC_CTYPE categoria da localidade atual. O primeiro personagem de
cada par de mapeamento deve estar na matriz para string1 e o segundo personagem
de cada par de mapeamento deve estar na matriz para string2 no mesmo parente
posição.
Exceto para conversão de maiúsculas e minúsculas, os caracteres especificados por uma classe de caracteres
expressão deve ser colocada na matriz em uma ordem não especificada.
Se o nome especificado para classe não define uma classe de caractere válida no
localidade atual, o comportamento é indefinido.
[=equivalente=] Representa todos os caracteres ou elementos de agrupamento pertencentes ao mesmo
classe de equivalência como equivalente, conforme definido pela configuração atual do LC_COLLATE
categoria de localidade. Uma expressão de classe de equivalência deve ser permitida apenas em
string1Ou, em string2 quando está sendo usado pelo combinado -d e -S opções.
Os caracteres pertencentes à classe de equivalência devem ser colocados na matriz
em um pedido não especificado.
[x*n] Representa n ocorrências repetidas do personagem x. Porque esta expressão
é usado para mapear vários caracteres para um, só é válido quando ocorre em
string2. Se n é omitido ou é zero, deve ser interpretado como grande o suficiente para
estender a string2com base na sequência para o comprimento do string1sequência baseada em
If n tem um zero à esquerda, deve ser interpretado como um valor octal. De outra forma,
deve ser interpretado como um valor decimal.
Quando o -d opção não especificada:
* E se string2 está presente, cada caractere de entrada encontrado na matriz especificada por string1
deve ser substituído pelo caractere na mesma posição relativa na matriz
especificado por string2. Se a matriz especificada por string2 é mais curto que o
especificado por string1, ou se um personagem ocorrer mais de uma vez em string1, os resultados
não são especificados.
* Se o −C opção é especificada, os complementos dos caracteres especificados por string1
(o conjunto de todos os caracteres no conjunto de caracteres atual, conforme definido pelo atual
definição de LC_CTYPE, exceto para aqueles realmente especificados no string1 operando) deve
ser colocado na matriz na sequência de intercalação ascendente, conforme definido pelo atual
definição de LC_COLLATE.
* Se o -c opção é especificada, o complemento dos valores especificados por string1 deve
ser colocado na matriz em ordem crescente por valor binário.
* Porque a ordem em que os caracteres especificados por expressões de classe de caracteres ou
expressões de classe de equivalência são indefinidas, tais expressões só devem ser usadas se
a intenção é mapear vários personagens em um. Uma exceção é a conversão de caso, como
descrito anteriormente.
Quando o -d opção é especificada:
* Caracteres de entrada encontrados na matriz especificada por string1 deve ser excluído.
* Quando o −C opção é especificada com -d, todos os caracteres, exceto aqueles especificados por
string1 deve ser excluído. O conteúdo de string2 são ignorados, a menos que o -S opção
também especificado.
* Quando o -c opção é especificada com -d, todos os valores, exceto aqueles especificados por string1
deve ser excluído. O conteúdo de string2 deve ser ignorado, a menos que o -S opção
também especificado.
* A mesma string não pode ser usada para os -d e os votos de -S opção; quando ambas as opções
são especificados, ambos string1 (usado para exclusão) e string2 (usado para espremer) deve
é necessário.
Quando o -S opção é especificada, após quaisquer exclusões ou traduções terem ocorrido,
sequências repetidas do mesmo caractere devem ser substituídas por uma ocorrência do mesmo
caractere, se o caractere for encontrado na matriz especificada pelo último operando. Se o
o último operando contém uma classe de caractere, como o exemplo a seguir:
tr -S '[:espaço:]'
o array do último operando deve conter todos os caracteres dessa classe de caracteres.
No entanto, em uma conversão de caso, conforme descrito anteriormente, como:
tr -S '[:superior:]' '[:diminuir:]'
o array do último operando deve conter apenas os caracteres definidos como o segundo
personagens em cada um dos tupper or abaixar pares de personagens, conforme apropriado.
Uma string vazia usada para string1 or string2 produz resultados indefinidos.
SAIR STATUS
Os seguintes valores de saída devem ser retornados:
0 Todas as entradas foram processadas com sucesso.
> 0 Ocorreu um erro.
CONSEQUÊNCIAS OF ERROS
Padrão.
A seguinte seções e guarante que os mesmos estão informativo.
APLICAÇÃO USO
Se necessário, string1 e string2 pode ser citado para evitar a correspondência de padrões pelo shell.
Se um dígito comum (representando a si mesmo) deve seguir uma sequência octal, o
a sequência deve usar os três dígitos completos para evitar ambigüidade.
Quando string2 é mais curto que string1, uma diferença resulta entre o Sistema V histórico e
Sistemas BSD. Um sistema BSD pads string2 com o último caractere encontrado em string2. Assim,
é possível fazer o seguinte:
tr 0123456789 d
que traduziria todos os dígitos ao pé da letra 'd'. Uma vez que esta área é especificamente
não especificado neste volume de POSIX.1‐2008, os comportamentos BSD e System V são
permitido, mas um aplicativo em conformidade não pode confiar no comportamento do BSD. Teria que
codifique o exemplo da seguinte maneira:
tr 0123456789 '[d *]'
Deve-se notar que, apesar das semelhanças na aparência, os operandos string usados por
tr não são expressões regulares.
Ao contrário de algumas implementações históricas, esta definição do tr utilitário corretamente
processa caracteres NUL em seu fluxo de entrada. Os caracteres NUL podem ser removidos usando:
tr -d '\ 000'
EXEMPLOS
1. O exemplo a seguir cria uma lista de todas as palavras em file1 um por linha em file2,
onde uma palavra é considerada uma seqüência máxima de letras.
tr −cs "[:alfa:]" "[\ n *]" <arquivo1 > arquivo2
2. O próximo exemplo traduz todos os caracteres minúsculos em file1 para maiúsculas e escreve
os resultados para a saída padrão.
tr "[:diminuir:]" "[:superior:]" <arquivo1
3. Este exemplo usa uma classe de equivalência para identificar variantes acentuadas da base
personagem 'e' in file1, que são despojados de marcas diacríticas e escritos para file2.
tr "[= e =]" "[e *]" <arquivo1 > arquivo2
JUSTIFICATIVA
Em algumas propostas iniciais, uma opção explícita -n foi adicionado para desativar o histórico
comportamento de retirar caracteres NUL da entrada. Foi considerado que automaticamente
retirar caracteres NUL da entrada não era uma funcionalidade correta. No entanto, o
remoção de -n em uma proposta posterior não remove o requisito de que tr corretamente
processar caracteres NUL em seu fluxo de entrada. Os caracteres NUL podem ser removidos usando tr -d
'\ 000'.
Implementações históricas de tr diferem amplamente em sintaxe e comportamento. Por exemplo, o
A versão BSD não precisa dos caracteres de colchetes para a sequência de repetição. o tr
a sintaxe do utilitário é baseada mais de perto no modelo System V e XPG3 ao tentar
acomodar implementações BSD históricas. No caso do curto string2 preenchimento, o
decisão foi não especificar o comportamento e preservar os scripts System V e XPG3, que podem
encontrar dificuldade com o método BSD. A suposição foi feita de que os usuários BSD de tr tem de
faça acomodações para atender à sintaxe definida aqui. Uma vez que é possível usar o
sequência de repetição para duplicar o comportamento desejado, embora não haja uma maneira simples de
alcançar o método System V, essa era a abordagem correta, senão desejável.
O uso de valores octais para especificar caracteres de controle, embora tenha precedentes históricos,
não é portátil. A introdução de sequências de escape para caracteres de controle deve
fornecer a portabilidade necessária. É reconhecido que isso pode causar algum histórico
scripts para quebrar.
Uma proposta inicial incluía suporte para elementos de agrupamento de vários caracteres. Foi apontado
fora isso, enquanto tr emprega alguns elementos sintáticos de ERs, o objetivo de tr é bastante
diferente; intervalos, por exemplo, não têm um significado semelhante (`` qualquer um dos caracteres no
intervalo corresponde a '', contra `` traduza cada caractere no intervalo para a saída
contrapartida''). Como resultado, o suporte incluído anteriormente para agrupamento de vários caracteres
elementos foram removidos. O que resta são os intervalos na ordem de agrupamento atual (para apoiar,
por exemplo, caracteres acentuados), classes de caracteres e classes de equivalência.
No XPG3 o [:classe:] e [=equivalente=] convenções são mostradas com colchetes duplos, como em RE
sintaxe. Contudo, tr não implementa princípios RE; ele apenas pega emprestado parte da sintaxe.
Consequentemente, [:classe:] e [=equivalente=] devem ser considerados como elementos sintáticos em um par
com [x*n], que não é uma expressão de colchetes RE.
Os desenvolvedores padrão irão considerar mudanças para tr que permitem traduzir caracteres
entre diferentes codificações de caracteres, ou eles vão considerar o fornecimento de um novo utilitário para
realizar isso.
Em sistemas System V históricos, uma expressão de intervalo requer colchetes,
tais como:
tr '[az]' '[AZ]'
No entanto, os sistemas baseados em BSD não exigiam os colchetes, e esta convenção é usada aqui
para evitar quebrar um grande número de scripts BSD:
tr AZ AZ
O script System V anterior continuará a funcionar porque os colchetes, tratados como
caracteres regulares, são traduzidos para eles próprios. No entanto, qualquer script System V que
confiou em "a-z" representando os três personagens 'uma', '-' e 'z' tem que ser reescrito
as "az−".
O padrão ISO POSIX ‐ 2: 1993 tinha um -c opção que se comportou de forma semelhante ao −C opção, mas
não forneceu funcionalidade equivalente ao -c opção especificada em POSIX.1‐2008. Esse
significava que a prática histórica de ser capaz de especificar tr −cd\ 000− \ 177 (o que seria
excluir todos os bytes com o conjunto de bits superior) não teria efeito porque, na localidade C,
bytes com os valores octal 200 a octal 377 não são caracteres.
A versão anterior também dizia que as sequências octais se referiam a elementos de agrupamento e
podem ser colocados adjacentes um ao outro para especificar caracteres multibyte. No entanto, foi
observou que isso causou ambigüidades porque tr não seria capaz de dizer se adjacente
sequências octais pretendiam especificar caracteres multibyte ou múltiplos bytes simples
personagens. POSIX.1‐2008 especifica que as sequências octais sempre se referem ao binário de byte único
valores quando usados para especificar um ponto final de um intervalo de elementos de agrupamento.
Versões anteriores deste padrão permitiam implementações com bytes diferentes de oito
bits, mas isso foi modificado nesta versão.
FUTURO INSTRUÇÕES
Nenhum.
Use trposix online usando serviços onworks.net