Supprimer CR et LF dans Linux


2

Comment puis-je supprimer avec sed tous les CR et LF d'un fichier texte (lignes de jointure)

Réponses:



1

Vous pouvez utiliser \ret \n, selon votre système d'exploitation.

\r\nfonctionne sur windows, \nfonctionne sur la plupart des * nix, mais le remplacer par une chaîne vide devrait bien fusionner vos lignes.


1
La question est assez sedspécifique (balise et titre). L’apprentissage de modèles ou de recettes simples pour sed aide à développer une compréhension permettant de traiter des cas plus complexes.
mctylr

@ctyl; Alors? Regex est regex, que vous l'utilisiez dans sed ou perl. Le simple fait de pointer le motif sur le motif auquel ils veulent correspondre les aidera beaucoup plus qu'une commande copier-coller, imo.
Phoshi

Reportez-vous à la page 23 de la section Maîtrise des expressions régulières oreilly ou à la section "Différents moteurs d’expression régulière" de la page regular-expressions.info/tutorial.html ou php.net/manual/fr/reference.pcre.pattern.differences. php
mctylr

@ctyl; Bien sûr, je réalise les différences d’implémentation, mais la correspondance d’ un seul caractère connu ne change pas entre les implémentations. \ r \ n est \ r \ n, peu importe qui le demande, ceci n’est pas sous le contrôle de la façon dont le moteur est implémenté.
Phoshi

1

Je suis d'accord avec Dennis Williamson ... voici une autre alternative:

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

Pourquoi tant de questions incluent-elles "avec sed"? J'utilise sed, mais je ne combat pas ses limites.


0

Sur un système Unix / Linux, je pense que cela fonctionnera pour vous. Je l'ai testé avec GNU sed, mais je ne pense pas que cela utilise des extensions GNU.

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

1
Si vous le changez de manière à ce que cr et nl soient entre crochets, cela fonctionnera même si l'un ou l'autre est manquant ou s'ils sont dans l'ordre inverse:[\r\n]
Dennis Williamson

Oui, donc cela dépend si l' on prend soin d'enlever tous \ret \ncaractères, ou seulement \r\n« paires ». Différents cas peuvent avoir des réponses différentes. Mais très bon point, merci.
mctylr

Presque incroyable, personne n’a suggéré Sed | sed comme solution. Personne ne discute de l'exigence de frappe au clavier ctrl-V ctrl-M (ala vi)? Je suppose que les anciens savent et arrêtent de demander ...
mckenzm
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.