Como concatenar pares de células; cada segunda célula para a primeira

0

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
sagar
fonte
2
Você poderia usar as opções de formatação para tornar sua pergunta mais legível?
Oliver Friedrich
1
@BeowulfOF Os novos usuários tendem a não conhecer as opções de formatação aqui, por isso é sempre melhor entrar e formatar você mesmo, se puder. Eu apenas fiz a mim mesma.
JakeGould

Respostas:

1

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.

gogoud
fonte
Quanto mais enigmática uma resposta, mais explicações ela precisa. Por favor, explique Ne \r\?.
G-Man
Feliz em explicar. '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. 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. HTH.
28415 gogoud
0

Dada a gvimtag, presumo que você esteja usando o editor gvimou vim. Experimente a macro:

:map q Jxjq

A J j oins as duas linhas, deixando um espaço; o xremove esse espaço e jmove para a próxima linha. O qno final repete o processo; corresponde ao qapós o :mapcomando.

Essa é uma vimacro da velha escola ; Não preciso aprender os vimrecursos macro mais amplos e capazes .

mpez0
fonte
0

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 /.
Christian Brabandt
fonte