Adicionar caracter em posição específica [RESOLVIDO]

1. Adicionar caracter em posição específica [RESOLVIDO]

JIMJR
jimjrivan

(usa Debian)

Enviado em 18/02/2011 - 15:16h

Gostaria de saber como fazer para adicionar um caracter em uma posição específica de uma linha, no vi.
Eu estou tentado colocar o caracter "\" na posição 79, eu consegui apenas colocar este caracter no fim da linha, porém existem linhas que têm menos que 79 posições.
Para colocar um caracter no fim da linha eu usei o seguinte comando ":s/$/\\/", porém eu quero colocar na posição 79, alguem poderia me ajudar com este problema?
No caso acho que no fim da linha eu deveria adicionar "espaços em branco" até a posição desejada, porém não sei fazer isto.

Vlw, pela atenção ae.


  


2. MELHOR RESPOSTA

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 19/02/2011 - 12:25h

Com o sed tente:

$ sed '/^.\{79,\}$/ { s/.\{79\}/&\\/ }' < arq_entrada > arq_saída

Desse modo o sed irá aplicar a substituição somente nas linhas com mais de 79 caracteres.

----

Você também pode tentar utilizar o velho 'ed'!

$ ed arq_entrada
/^.\{79,\}$/ s/.\{79\}/&\\/
wq arq_saida

3. Re: Adicionar caracter em posição específica [RESOLVIDO]

Joao
stack_of

(usa Slackware)

Enviado em 18/02/2011 - 15:44h

Você pode gravar uma macro para fazer isso.


4. Tente:

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 18/02/2011 - 15:58h

Sintaxe:

:[linha]s:/\v(.{posição})/\1[caractere]/

Ex.: Adicionar a '\' na posição 79 da linha 5:

:5s:/\v(.{79})/\1\\/


5. Re: Adicionar caracter em posição específica [RESOLVIDO]

Joao
stack_of

(usa Slackware)

Enviado em 18/02/2011 - 15:59h

Um exemplo de como gravar uma macro em vim:

Abra um arquivo qualquer:

vim arquivo

Entre no modo insert:

i

Escreva o seguinte:

1)

Tecle ESC e em seguida qa, que vai iniciar a gravacao da macro chamada a:

qa

Copie a primeira linha e cole:

yy
p

Incremente o valor da segunda linha:

<Ctrl>a

Finaliza a gravação da macro:

q

Tecle:

10@a





6. Re: Adicionar caracter em posição específica [RESOLVIDO]

Joao
stack_of

(usa Slackware)

Enviado em 18/02/2011 - 16:11h

Como o SMarcell respondeu com um comando, farei com uma macro, como outra opção:

vim arquivo

Gravar a macro b:

qb

Ir até a linha26:

:26

Até o caracter 79:

:goto 79

Inserit a letra c:

i
c

Finalizar:

ESC

Gravar a macro:

q

Executar a macro

@b


7. Vim rules

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 18/02/2011 - 16:21h

E ainda tem gente que acha que o Vim não presta!


8. Infelizmente é no VI

JIMJR
jimjrivan

(usa Debian)

Enviado em 18/02/2011 - 17:16h

Galera fiz os testes no VIM e deu certo, valeu mesmo, porém eu uso HP-UX então é VI (puro), ai tá complicado, não consegui rodar, não consigo ativar modo recording nele, talvez não tenha.

Usando somente ER também não deu certo, alias tem o problema também de o fim da linha ser antes do caracter 79, ai não funciona nem no VIM.


9. Re: Adicionar caracter em posição específica [RESOLVIDO]

Joao
stack_of

(usa Slackware)

Enviado em 18/02/2011 - 20:32h

Não seja por isso, tem vim para HP-UX:

http://h21007.www2.hp.com/portal/site/dspp/menuitem.863c3e4cbcdc3f3515b49c108973a801?ciid=a8080055ab...



10. Consegui fazer

JIMJR
jimjrivan

(usa Debian)

Enviado em 21/02/2011 - 09:24h

Galera consegui fazer segue abaixo a solução:

ESC
0f\70i
SPACE
ESC
078
SPACE
DW

Eu acabei mapeando este comando e tornando mais rápida esta tarefa.

map q 0f\70i ^[078 dw

Vlw quem ajudou ae.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts