En utilisant la commande:
tr -s '\n' ' '< test1
où test1 est un fichier texte.
Si test1 est écrit d'une manière telle qu'il contient des sauts de ligne (caractères de saut de ligne) et non\n (barre oblique inversée-n), la réponse est comme prévu, c'est-à-dire que tous les sauts de ligne sont remplacés par un seul espace.
Mais si disons que le test1 est formaté de telle sorte qu'il contient\n (barre oblique inversée-n) et non un retour à la ligne, alors l'exécution de la commande\n n'est pas remplacée par un seul espace, par exemple. si test1 contient
hello \n\n\n how are \n\n you
alors la sortie est
hello \n\n\n how are \n\n you
et pas
hello how are you
La question est donc de savoir comment remplacer les barres obliques inverses littérales?
Si c'est le cas, cela ne peut pas être fait avec tr, car tr ne fonctionne que sur des caractères uniques. Voici comment le faire dans sed (éditeur de chaînes):
$ cat test1
hello \n\n\n how are \n\n you
$ sed -e 's/\\n/ /g' < test1
hello how are you
notez la barre oblique inverse supplémentaire nécessaire pour dire à sed que nous recherchons ici une barre oblique inverse littérale, et pour ne pas interpréter '\ n' comme un caractère de saut de ligne.