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
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.]
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
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.
\U
significa: altera o padrão de correspondência para maiúsculas
%code% substitui todas as ocorrências g
Leitura recomendada: link
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
Tags ssh vi putty case find-and-replace