Mostrando postagens com marcador editor. Mostrar todas as postagens
Mostrando postagens com marcador editor. Mostrar todas as postagens

terça-feira, 4 de maio de 2010

O editor de texto vi

O vi foi o primeiro editor verdadeiramente baseado em telas para o UNIX e ainda é muito popular. É usado para editar arquivos de texto ASCII. Ele é pequeno, simples e não muito difícil para aprender. Atualmente as distribuições Linux trazem o VIM (VIsual editor iMproved) que é uma versão melhorada e atualizada do editor vi. O VIM melhora o vi acrescentando novas potencialidades: janelas múltiplas, anulação multi-nível, realce de blocos e mais. Para inicializar o VIM e editar um arquivo use a seguinte sintaxe:

# vim arquivo

Se o arquivo já existir, ele será aberto para edição, se não será aberto um novo arquivo. Existem três modos de operação: modo de comando, modo de execução e o modo de edição. Quando você inicia o VIM ele está no modo de comando, este modo permite que você use diversos comandos (pressionando uma ou mais teclas) para inserir, localizar ou modificar o texto. O modo de execução se inicia quando pressionamos os ":" (dois pontos), aparecendo um prompt na parte de baixo da tela para entrada de um comando. Conheça alguns:

Comandos de movimentação do cursor pelo texto:

Ctrl+f    avança para a próxima tela (semelhante a Page Down).
Ctrl+b    recua para a tela anterior (semelhante a Page Up).
0 (zero)  move o cursor para o início da linha.
$         move o cursor para o fim da linha.
nG        move o cursor para a linha n.
:n        move o cursor para a linha n.
G         move o cursor para a última linha do texto.
w         move o cursor para a próxima palavra
b         move o cursor para o início da palavra anterior
e         move o cursor para o próximo final de uma palavra
ge        move o cursor para o final anterior de uma palavra
setas     move o cursor.

Comandos de localização e troca de texto:

/palavra         procura pela palavra a partir da posição do cursor para baixo.
?palavra         procura pela palavra a partir da posição do cursor para cima.
n                repete a última procura.
N                repete a última procura na direção inversa.
:g/s1/s//p2/g    substitui em todo o texto os p1 por p2.
:g/p1/s//p2/gc   substitui em todo o texto, solicitando confirmação, os p1 por p2.
:n,m/p1/s//p2/g  substitui da linha n até m os p1 por p2.
Ctrl+g           exibe as informações do arquivo.

Comandos de modificação do texto:

x         apaga o caractere sob o cursor.
dd        apaga a linha sob o cursor.
ndd       apaga n linhas, da linha sob o cursor para baixo.
D         apaga os caracteres na linha a partir da posição do cursor.
yy        copia a linha sob o cursor.
nyy       copia n linhas, da linha sob o cursor para baixo.
p         cola o texto apagado ou copiado após a posição do cursor.
u         desfaz a última modificação.
:r arq    insere o conteúdo do arquivo especificado após a linha do cursor.

Comandos de edição do texto (inicia o modo de edição):

a         insere o texto depois da posição do cursor.
A         insere o texto no fim da linha de onde se encontra o cursor.
i         insere o texto na posição do cursor.
I         insere o texto no início da linha de onde se encontra o cursor.
o         insere uma linha abaixo da linha com o cursor.
O         insere uma linha acima da linha com o cursor.

No modo de edição, tudo que for digitado será inserido no texto a partir da posição do cursor. Para começar uma nova linha, pressione ENTER. Para retornar ao modo de comando pressione a tecla ESC.

Comandos para gravar o texto, abrir um novo arquivo ou sair do editor:

:w        grava o texto no arquivo aberto.
:w arq    grava o texto no arquivo especificado.
:w>> arq  acrescenta o texto no arquivo especificado.
:w!       força a gravação do texto no arquivo aberto.
:wq       grava o texto no arquivo aberto e sai do editor.
:wq arq   grava o texto no arquivo especificado e sai do editor.
:e arq    abre o arquivo especificado, fechando o atual.
:q        sai do editor desde que o texto não tenha nenhuma alteração.
:q!       força a saída do editor sem salvar as alterações no texto.

Se precisar use o comando :help, mas não se assuste com a quantidade de comandos existentes. No arquivo de ajuda do VIM, para avançar em um assunto posicione o cursor sobre a ligação e pressione CTRL-]. Para retornar pressione CTRL-t ou CTRL-o. O comando :q sai da ajuda e retorna ao editor.

segunda-feira, 17 de agosto de 2009

Editor de texto sed

sed é um "Stream EDitor" ou editor de fluxo, bastante leve para linha de comando. Um editor de fluxo é um programa usado para executar transformações básicas em textos recebidos de uma entrada em fluxo, pode ser vindo de um arquivo ou da entrada padrão.

O sed trabalha com somente uma passagem sobre a entrada, tornando-o assim mais eficiente. Mas é a habilidade de filtragem de texto em um redirecionamento da saída para a entrada padrão, canalização, que o distingue dos outros tipos de editores.

A característica principal do sed é poder editar arquivos automaticamente. É um editor de textos não interativo, ele pode editar automaticamente, sem interação do usuário, vários arquivos seguindo um conjunto de regras especificadas. É como uma edição em "lote".

O sed é um editor de fluxo que está incluído em quase todos os sabores de UNIX, incluindo o Linux. Entretanto as distribuições do Linux contém o GNU sed, uma versão melhorada com muitas extensões úteis que economizam tempo ao padrão sed POSIX e também não sofre as muitas limitações que versões anteriores e proprietárias do sed tinham.

O sed trabalha executando qualquer número de operações de edição especificadas pelo usuário nos dados de entrada. O sed é baseado em linhas, assim os comandos são executados em cada linha, em ordem. E o sed escreve o resultado na saída padrão, ele não modifica nenhum arquivo de entrada.

Abaixo apresento alguns exemplos de uso do sed. Dentre eles alguns exemplos com o uso do sed combinado com outros programas para que tenha algo mais prático e assim entender melhor a utilidade do sed:

Substitui em cada linha de arquivo.txt as palavras "assim" para "assado":
sed 's/assim/assado/g' arquivo.txt

Substitui somente nas linhas que encontrar a string as palavras "assim" para "assado":
sed '/string/s/assim/assado/g'

Remove os 34 primeiros caracteres a partir do início de cada linha:
sed 's/^.\{34\}//' hash.md5 > arquivo.txt

Remove desde o início de cada linha até a última / encontrada
sed 's/^.*\///' caminhos.txt > sonomes.txt

Renomeia todos os arquivos .doc trocando _ e - por espaços:
for i in `ls *.doc`; do mv $i "`echo $i | sed 's/_/ /g; s/-/ /g'`"; done

Remove em arquivo.txt a linha 1 até a 28:
sed '1,28d' arquivo.txt > outro_arquivo.txt

Remove todas as linhas em branco:
sed '/^$/d' arquivo_com_linhas_em_branco.txt | sort > arquivo_limpo.txt

Remove todas as linhas que contenham a string:
sed '/string/d' arquivo.txt

Renomeia todos os arquivos de letras maiúsculas para minúsculas:
for i in `ls *.*`; do mv $i `echo $i | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÇÑ/abcdefghijklmnopqrstuvwxyzàáâãäåèéêëìíîïòóôõöùúûüçñ/'`; done

Remove todas as tags HTML:
sed 's/<[^>]*>//g' arquivo.html > arquivo.txt

Adiciona um texto no início de cada linha:
sed 's/^/texto incluido/' arquivo.txt

Adiciona um texto no final de cada linha:
sed 's/$/texto incluido/' arquivo.txt