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.
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 Jj 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 .
Respostas:
Se você tiver sed, pode fazê-lo desta maneira:
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.
fonte
N
e\r\?
.Dada a
gvim
tag, presumo que você esteja usando o editorgvim
ouvim
. Experimente a macro:A
J
j oins as duas linhas, deixando um espaço; ox
remove esse espaço ej
move para a próxima linha. Oq
no final repete o processo; corresponde aoq
após o:map
comando.Essa é uma
vi
macro da velha escola ; Não preciso aprender osvim
recursos macro mais amplos e capazes .fonte
No Vi / Vim, você pode fazer algo assim:
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
fonte