SED remplacer la nouvelle ligne par l'espace

SED remplacer la nouvelle ligne par l'espace
Dans Unix / Linux, la commande SED est un outil dédié pour l'édition de flux. Il peut effectuer diverses opérations sur un flux de texte, comme la recherche, la recherche et le remplacement, et l'insertion / la suppression. Pour la plupart, cependant, SED est utilisé pour trouver et remplacer le contenu du texte.

Dans ce guide, nous présenterons le remplacement de Newlines par l'espace en utilisant SED.

Utilisation de SED pour remplacer le texte

Tout d'abord, regardons rapidement la réalisation de Basic Find and Replacez en utilisant SED. La même méthode sera utilisée lors du remplacement de NewLines par des espaces par quelques options supplémentaires. La structure de commande est la suivante:

$ sed -e 's ///'

Jetez un œil à la commande suivante:

$ echo "The Quick Brown Fox" | sed -e 's / rapide / rapide / g'

La commande echo imprime la chaîne à stdout. Le flux STDOUT est ensuite tué sur SED. Nous avons demandé à SED de remplacer toute instance de rapide à remplacer par rapidement. Enfin, la sortie est imprimée à l'écran.

Remplacement de Newlines par l'espace

Pour une démonstration, j'ai créé le test de fichier texte suivant.txt avec plusieurs contenus factice:

$ test de chat.SMS

La commande SED accepte des expressions régulières pour décrire divers modèles. Tirant cette fonctionnalité, nous allons décrire Newline comme \ n. Essayons de remplacer les Newlines par Whitespace:

$ sed -e 's / \ n / / g' test.SMS

Cependant, cela n'a pas fonctionné comme prévu. Pour atteindre cet objectif, nous avons besoin de quelques options supplémentaires. Jetez un œil à la commande suivante:

$ sed -e ': a; n; $!Test de ba; s / \ n / / g '.SMS

La commande SED a plusieurs sections; Chacun indique une tâche spécifique:

  • : A: Crée une étiquette «A»
  • N: ajoute la ligne suivante à l'espace de motif
  • $!BA: Si ce n'est pas la dernière ligne, revient à l'étiquette «A»
  • S / \ n / / g: trouve et remplace Newline (\ n) par l'espace (/ /). Le motif est apparié à l'échelle mondiale (/ g)

La commande SED traverse les étapes jusqu'à ce qu'elle atteigne la dernière ligne, substituant tous les caractères \ n par l'espace.

Au lieu de cette commande complexe, nous pouvons simplifier les choses en utilisant le drapeau -Z qui spécifie SED pour travailler avec des enregistrements séparés null. La commande ressemblerait à ceci:

$ sed -z -e 's / \ n / / g' test.SMS

Méthodes alternatives

Alors que SED peut très bien faire la tâche, il existe des outils alternatifs. Dans cette section, nous en examinerons brièvement quelques-uns.

Pour l'exemple suivant, nous pouvons utiliser la commande tr pour remplacer Newline par Whitespace de manière simple:

$ tr '\ n "< test.txt

Nous pouvons également utiliser Perl pour faire le travail. La syntaxe suivante est également similaire à ce que nous avons utilisé avec SED (mais simplifié):

$ perl -p -e 's / \ n / /' test.SMS

Une autre façon de remplacer Newlines par Whitespace est d'utiliser la commande de collage. Notez qu'il ne peut supprimer qu'un seul caractère:

$ colzte -s -d "Test.SMS

Semblable à SED, Linux est livré avec un autre outil awk. Semblable à SED, il peut également effectuer des remplacements avancés sur l'entrée. Pour notre objectif, utilisez la commande awk suivante:

$ awk 1 ors = "Test.SMS

Conclusion

Ce guide a exploré comment nous pouvons remplacer Newline par l'espace en utilisant SED. Il a été réalisé de deux manières différentes. Ce guide comprend également d'autres outils pertinents que nous pouvons utiliser pour remplacer Newline par Whitespace.

Au lieu d'utiliser des commandes complexes difficiles à mémoriser, nous utilisons des scripts bash pour effectuer beaucoup de choses dans Linux. Bien que cela ait au prix de certaines performances, la flexibilité et la convivialité en valent la peine. En savoir plus sur les scripts bash pour les débutants.