Questão Remova CR e LF no Linux


Como posso remover com sed todos CR e LF do arquivo de texto (linhas de junção)


2


origem




Respostas:


tr -d '\n\r' < file

5



a solução obviamente mais fácil - akira


Você pode usar \r e \n, dependendo do seu sistema operacional.

\r\n trabalha nas janelas, \n funciona na maioria dos * nixes, mas substituí-lo por uma string em branco deve mesclar suas linhas muito bem.


1



A questão é bastante sed específico (tag e título). Aprender padrões simples ou receitas para sed, ajuda a desenvolver uma compreensão para lidar com casos mais complexos. - mctylr
@mctylr; Assim? Regex é regex, quer você esteja usando em sed ou perl. Apenas apontando o op para o padrão que eles querem combinar irá ajudá-los muito mais do que um comando copiar e colar, imo. - Phoshi
Veja a página 23 de Mastering Regular Expressions oreilly.com/catalog/9780596528126/preview ou "Diferentes motores de expressão regular" em regular-expressions.info/tutorial.html ou php.net/manual/en/reference.pcre.pattern.differences.php - mctylr
@mctylr; Claro que percebo as diferenças na implementação, mas a correspondência um único caractere conhecido não muda entre implementações. \ r \ n é \ r \ n independentemente de quem está perguntando, isso não é algo sob o controle de como o mecanismo é implementado. - Phoshi


Eu concordo com o Dennis Williamson ... aqui está outra alternativa:

perl -0pe 's/[\r\n]//g' < in > out

Por que tantas perguntas incluem "com sed"? Eu uso sed, mas não luto contra suas limitações.


1





Em um sistema Unix / Linux, acredito que isso funcionará para você. Eu testei com o GNU sed, mas não acho que isso esteja usando extensões GNU.

sed -e :a -e '/$/N; s/\r\n//; ta;' <in.txt >out.txt

0



Se você alterá-lo de modo que o cr e o nl estejam entre colchetes, ele funcionará mesmo se um ou outro estiver faltando ou se eles estiverem na ordem oposta: [\r\n] - Dennis Williamson
Sim, então depende se alguém se importa em remover todos \r e \n caracteres, ou apenas \r\n "pares". Casos diferentes podem ter respostas diferentes. Mas muito bom ponto, obrigado. - mctylr
Quase incrível que em todo esse tempo ninguém sugeriu sed | sed como uma solução. Ninguém discute o requisito de pressionamento de tecla ctrl-V ctrl-M (ala vi)? Eu suponho que as velhas mãos saibam e parem de perguntar ... - mckenzm