linux - sed w




Comment supprimer les nouvelles lignes d'un fichier texte? (10)

En supposant que vous ne souhaitiez conserver que les chiffres et les points-virgules, les éléments suivants devraient faire l'affaire en supposant qu'il n'y a pas de problème majeur d'encodage, bien que cela supprime également la dernière "nouvelle ligne":

$ tr -cd ";0-9"

Vous pouvez facilement modifier ce qui précède pour inclure d'autres caractères, par exemple si vous souhaitez conserver des points décimaux, des virgules, etc.

J'ai les données suivantes, et je dois tout mettre en ligne.

J'ai ceci:

22791

;

14336

;

22821

;

34653

;

21491

;

25522

;

33238

;

J'ai besoin de ça:

22791;14336;22821;34653;21491;25522;33238;

MODIFIER

Aucune de ces commandes ne fonctionne parfaitement.

La plupart d'entre eux ont laissé les données comme ceci:

22791

;14336

;22821

;34653

;21491

;25522

En utilisant man 1 ed:

# cf. http://wiki.bash-hackers.org/doku.php?id=howto:edit-ed 
ed -s file <<< $'1,$j\n,p'  # print to stdout 
ed -s file <<< $'1,$j\nwq'  # in-place edit

Je reçois généralement cette fonctionnalité lorsque je copie un extrait de code à partir d'un fichier et je veux le coller dans une console sans ajouter de nouvelles lignes inutiles, j'ai fini par faire un alias bash
(Je l'ai appelé oneline si vous êtes curieux)

xsel -b -o | tr -d '\n' | tr -s ' ' | xsel -b -i
  • xsel -b -o lit mon presse-papiers

  • tr -d '\n' supprime les nouvelles lignes

  • tr -s ' ' supprime les espaces récurrents

  • xsel -b -i pousse ce retour à mon presse-papiers

Après cela, je voudrais coller le nouveau contenu du presse-papiers en ligne dans une console ou autre.


Nerd fait: utiliser ASCII à la place.

tr -d '\012' < filename.extension   

(Parce que je n'ai pas vu la réponse friggin qui avait la même solution, seule différence était que le mien avait ASCII)


Utilisation de l'éditeur de texte gedit (3.18.3)

  1. Cliquez sur Rechercher
  2. Cliquez sur Rechercher et remplacer ...
  3. Entrez \n\s dans le champ Rechercher
  4. Laissez Remplacer par vide (rien)
  5. Cochez la case Expression régulière
  6. Cliquez sur le bouton Rechercher

Note: ceci ne résout pas exactement le problème original de l'OP, vieux de 7 ans, mais devrait aider certains utilisateurs de nox linux (comme moi) qui trouvent leur chemin à partir des SE avec des questions similaires "Comment obtenir mon texte tout sur une ligne" .


Vous pouvez éditer le fichier dans vim:

$ vim inputfile
:%s/\n//g

xargs utilise également les nouvelles lignes (mais ajoute une nouvelle ligne de fin):

xargs < file.txt | tr -d ' '

$ perl -0777 -pe 's/\n+//g' input >output
$ perl -0777 -pe 'tr/\n//d' input >output

perl -p -i -e 's/\R//g;' filename

Doit faire le travail.


tr -d '\n' < file.txt

Ou

awk '{ printf "%s", $0 }' file.txt

Ou

sed ':a;N;$!ba;s/\n//g' file.txt

Cette page a un tas d'autres méthodes pour supprimer les nouvelles lignes.

édité pour enlever l'abus félin :)





sed