como faço para transformar um arquivo inteiro em maiúsculas?

0

Eu tenho um arquivo em um servidor em outro campus em letras minúsculas que eu preciso mudar para todas as maiúsculas. Existe algum comando unix simples que fará isso? [Eu estou usando PuTTy em um PC, se isso faz alguma diferença.]

São apenas 4 letras diferentes (é DNA, portanto, apenas A, T, C e G), então 4 funções separadas de pesquisa e substituição também funcionariam. (No VI ou outro editor de texto que funcionará através de acesso remoto), mas eu não sei como fazer uma pesquisa e substituir no VI?

Eu poderia copiá-lo para minha área de trabalho, fazer uma pesquisa e substituir em um editor de texto local e, em seguida, copiar de volta, mas depois ele terminaria cheio de quebras de linha do Windows? [Eu estou em um PC, a máquina remota é um servidor linux, e o programa que eu preciso para interpretar o arquivo DNA só pode lidar com quebras de linha unix.]

    
por Kirt 05.10.2012 / 07:27

3 respostas

4

Você não precisa abrir o arquivo em um editor que você pode usar tr para (t) ranslate (c) caracteres ( man page ) diretamente:

tr '[:lower:]' '[:upper:]' < input.txt > output.txt
    
por 05.10.2012 / 07:45
2

Esta seria a solução VI. Se você quiser apenas substituir esses caracteres pelo equivalente em maiúsculas

:s/[actg]/\U
:s/[a-z]/\U
:s/[actg]/\U
:s/[a-z]/\U%pre%/g
/g
/g
/g

E para todos os personagens

%pre%

Explicação: s (ubstite) [actg] expressão regular para esses caracteres ou [a-z] para o intervalo. \Ug significa: altera o padrão de correspondência para maiúsculas %code% substitui todas as ocorrências

Leitura recomendada: link

    
por 05.10.2012 / 07:48
1

Tenho certeza de que outros aparecerão com soluções mais elegantes, mas como seu alfabeto é limitado a apenas 4 letras, você pode fazer isso

sed 's/a/A/g;s/t/T/g;s/c/C/g;s/g/G/g' <filename>

se isso funcionar corretamente, você pode adicionar > <filename> ou sed -i ... para salvar no arquivo

Confira wikipedia para mais informações

    
por 05.10.2012 / 07:44