Archive for the ‘Vim / VI’ Category
Os formatos de arquivos UNIX, DOS e MAC e como convertê-los
Os arquivos de tipo texto puro (geralmente txt) basicamente ficam disponíveis em três formatos que serão explicados a seguir: UNIX, DOS e MAC, mas antes você deve entender o que é o CR (\r) e o LF (\n).
CR ou \r significa Carriage Return LF ou \n significa Line Feed
Na época das impressoras matriciais, quando você mandava imprimir algo, o caractere CR era entendido pela impressora como Retornar o carro (cabeça de impressão) para o começo da linha e o caractere LF era entendido como subir a folha de modo que a impressão fosse para a próxima linha.
| Formato | Característica | Descrição | |
| UNIX | LF | \n | Um caractere apenas caracteriza a quebra de linha. Um LF (\n) faz o Unix entender que se deve mandar um CR para a impressora antes. - Não é recomendado que um arquivo do formato UNIX seja aberto pelo Bloco de Notas do Windows porque os LF que não são precedidos por CR serão trocados por quadrados. Recomenda-se usar o Wordpad. |
| DOS | CR+LF | \r\n | - Dois caracteres caracterizam a quebra de linha nesse formato. Tanto o DOS quanto o Windows precisam que os caracteres CR (\r) e LF (\n) estejam especificados no arquivo. - Somente agora o Windows está inserindo automaticamente: – um caractere CR quando este não está precedendo o LF; – um caractere LF quando este não está sucedendo o CR; – O DOS não faz estes ajustes automáticos. - Os editores de textos do Unix, geralmente em modo de depuração, exibem o caractere CR como ^M. |
| MAC | CR | \r | Este formato foi usado somente nos antigos Macintoshes. A partir do Mac OSX o formato de arquivos padrão passou a ser UNIX também porque o Mac OSX é baseado em Unix, assim como o Linux. Os Macintoshes automaticamente inseriam um LF após um CR caso o arquivo fosse enviado para a impressora. - Os editores de textos do Unix, geralmente em modo de depuração, exibem o caractere CR como ^M. - Não é recomendado que um arquivo do formato MAC seja aberto pelo Bloco de Notas do Windows porque os CR que não são sucedidos por LF serão trocados por quadrados. Recomenda-se usar o Wordpad. |
Vários editores de textos conseguem converter o arquivo de um formato em outro formato. Para o Windows existe alguns, como os gratuitos Win32Pad e o Notepad++. No Mac e no Linux usaremos o próprio Vim.
Se você ainda não conhece o básico do Vim [clique aqui].
Em modo de comando usaremos :set fileformat ou, simplesmente, :set ff.
:set ff=unix # Converte o arquivo para o formato UNIX. :set ff=dos # Converte o arquivo para o formato DOS. :set ff=mac # Converte o arquivo para o formato MAC. # Lembre de salvar o arquivo depois.
Usando o vi / vim
O vim é um editor de texto para o Unix com muitos recursos avançados capazes de surpreender qualquer editor de texto gráfico, no entanto, não espere editar um documento do Word nele (a não ser que você já tenha feito a engenharia reversa dele :-D).
Com o vim você pode criar um arquivo ou abrir um arquivo com o comando:
vim meuarquivo.txt # Se o arquivo existe, o vim o abrirá. # Se não existe, o arquivo é criado ao ser salvo.
O vim possui dois modos, o de comando e o de edição. Quando você abre o vim, ele carrega o modo de comando.
Para alternar do modo de comando para o modo de edição pressione a tecla i (“I” de Igreja), você verá que no rodapé aparecerá a palavra INSERT. O vim dessa forma ficará igual ao Bloco de Notas, Edit e qualquer outro editor de texto tradicional.
Para voltar ao modo de comando pressione a tecla ESC, perceba que a palavra INSERT do rodapé desaparecerá.
É somente no modo de comando que poderemos salvar o arquivo e sair do vim.
Se quisermos salvar um arquivo (ou criá-lo se ele não existir), deveremos.
- Pressionar o ESC para ir ao modo de comando (se você não estiver nele);
- Digitar :w (comando de salvar o arquivo, abaixo está a tabela com mais comandos);
- Pressionar o ENTER para executar o comando de salvar.
Tabela com mais comandos:
:w # Salva o arquivo (ou cria e salva se ele não existe).
:w! # Salva forçado o arquivo (ou cria e salva forçado se ele não existe).
:q # Sai sem salvar, mas não sai se o arquivo ter sido editado antes.
:q! # Sai forçado do vim, mesmo não tendo salvo o arquivo.
:x # Salva o arquivo e sai do vim.
:x! # Salva o arquivo forçado (ou cria e salva forçado) e sai do vim.
:w arquivo2.txt # É o "Salvar como" dando o nome de "arquivo2.txt".
:w! arquivo2.txt # É o "Salvar como" forçado.
:r arquivo2.txt # Insere (como um include) o conteúdo de "arquivo2.txt"
# no local em que o cursor estiver posicionado.
Neste blog você verá mais coisas sobre o vim.
Se quiser, também pode consultar a [documentação online do Vim].
Substituindo dados com sed e vim.
Supondo que em um TXT você queira substituir todos os Jose por Joao, o comando é:
Modo preview (só mostra a substituição na tela, mas não salva o arquivo)
sed 's/Jose/Joao/g' arquivo.txt
Modo edição (não mostra nada na tela, mas substitui o arquivo)
sed -i 's/Jose/Joao/g' arquivo.txt
Modo edição com backup (substitui e deixa o arquivo original renomeado)
sed -i.bkp 's/Jose/Joao/g' arquivo.txt
* isso irá renomear o arquivo original para arquivo.txt.bkp e criará o novo arquio.txt com a substituição.
Modo captura de saída de outro comando:
comando qualquer | sed 's/Jose/Joao/g'
No editor vim é parecido, basta abrir o arquivo e rodar o comando:
:%s/Jose/Joao/g