GNU/Linux >> Tutoriels Linux >  >> Linux

Sed peut-il remplacer les caractères de nouvelle ligne ?

Y a-t-il un problème avec sed et le caractère de nouvelle ligne ?
J'ai un fichier test.txt avec le contenu suivant

aaaaa  
bbbbb  
ccccc  
ddddd  

Ce qui suit ne fonctionne pas :
sed -r -i 's/n/,/g' test.txt

Je sais que je peux utiliser tr pour cela, mais ma question est pourquoi cela ne semble pas possible avec sed.

S'il s'agit d'un effet secondaire du traitement du fichier ligne par ligne, je serais intéressé de savoir pourquoi cela se produit. Je pense que grep supprime les nouvelles lignes. Est-ce que sed fait la même chose ?

Réponse acceptée :

Avec GNU sed et fourni POSIXLY_CORRECT n'est pas dans l'environnement (pour une entrée sur une seule ligne) :

sed -i ':a;N;$!ba;s/n/,/g' test.txt

De https://stackoverflow.com/questions/1251999/sed-how-can-i-replace-a-newline-n :

  1. créer une étiquette via :a
  2. ajoutez la ligne actuelle et la ligne suivante à l'espace de modèle via N
  3. si nous sommes avant la dernière ligne, branchez-vous sur le libellé créé $!ba ($! signifie ne pas le faire sur la dernière ligne (car il devrait y avoir une dernière nouvelle ligne)).
  4. Enfin, la substitution remplace chaque retour à la ligne par une virgule sur l'espace du modèle (qui est le fichier entier).

Linux
  1. Comment remplacer sed comme texte par python?

  2. Comment remplacer une chaîne dans plusieurs fichiers en ligne de commande Linux

  3. trouver le texte correspondant et remplacer la ligne suivante

  4. Comment remplacer récursivement les caractères par sed ?

  5. comment insérer une nouvelle ligne si une ligne a plus de 60 caractères

Top 20 des commandes sed à utiliser

Comment utiliser Sed pour remplacer une chaîne multiligne ?

Comment utiliser Sed ou Ex pour remplacer un bloc (code multiligne) par un nouveau bloc de texte (code) ?

Sed Supprimer les caractères de la nouvelle ligne ?

Insertion Sed sur Osx sur une certaine ligne ?

Tutoriel Unix Sed :ajouter, insérer, remplacer et compter les lignes de fichiers