Como concatenar pares sucessivos de células em uma coluna, adicionando a segunda célula de cada par à primeira.
Por exemplo:
santhosh
kumar
sagar
sv
sai
deva
E o resultado deve ser:
santhoshkumar
sagarsv
saidevax
Como concatenar pares sucessivos de células em uma coluna, adicionando a segunda célula de cada par à primeira.
Por exemplo:
santhosh
kumar
sagar
sv
sai
deva
E o resultado deve ser:
santhoshkumar
sagarsv
saidevax
Respostas:
Se você tiver sed, pode fazê-lo desta maneira:
sed 'N;s/\r\?\n//' myfile.txt
Explicação: sed lê o arquivo linha por linha. 'N' adiciona a próxima linha (isto é, a linha 2, se atualmente estamos na linha 1) ao buffer, então precisamos remover a 'nova linha' que está entre as 2 linhas que temos agora no buffer. O comando 's' substitui algum texto na linha (conforme especificado entre a primeira e a segunda barra) por outro texto (especificado entre a segunda e a terceira barra) - nesse caso, queremos substituir a linha que termina com nada.
Com terminações de linha do tipo Unix, isso é feito removendo o avanço de linha '\ n', mas se for um documento do tipo Windows, o avanço de linha é precedido pelo retorno de carro '\ r'. Então \ r \? é 'opcional \ r' onde o ponto de interrogação escapado indica que o caractere anterior pode ou não existir.
N
e \r\?
.
Dada a gvim
tag, presumo que você esteja usando o editor gvim
ou vim
. Experimente a macro:
:map q Jxjq
A J
j oins as duas linhas, deixando um espaço; o x
remove esse espaço e j
move para a próxima linha. O q
no final repete o processo; corresponde ao q
após o :map
comando.
Essa é uma vi
macro da velha escola ; Não preciso aprender os vim
recursos macro mais amplos e capazes .
No Vi / Vim, você pode fazer algo assim:
:g/./j!
O que basicamente significa, faça ( :g/
) para cada linha não vazia ( .
) e junte-a à próxima sem adicionar espaços à direita ( j!
)
Leia mais na ajuda
:h :g
:h :j
:h /.