Afficher les caractères \ n en tant que nouvelles lignes lors de l'utilisation de la queue?

17

J'ai un fichier que j'essaie de lire en utilisant tail -f. Je me demandais s'il y avait un moyen pour que le terminal produise un saut de ligne réel au lieu du caractère \ n.

GSto
la source
1
En règle générale, tail -f affichera les sauts de ligne comme des sauts de ligne. Vous pouvez avoir un problème avec les paramètres de votre console, si c'est ce que vous voyez.
Jon Lasser
1
Ou il suit un fichier qui contient en fait un \ n littéral. Peut-être que les sauts de ligne ont été convertis en un "\ n" littéral avant d'être écrits dans un fichier.
Josh

Réponses:

25
tail -f file | sed 's/\\n/\n/g'
En pause jusqu'à nouvel ordre.
la source
2
Je voudrais ajouter que j'ai trouvé que je devais réellement entrer physiquement un saut de ligne dans ma commande sed après la barre oblique inverse pour faire ce travail, comme ceci:~$ tail -f /var/log/apache2/error_log | sed 's/\\n/\ > /g'
Jon z
Quelqu'un connaît-il un moyen de réaliser la même chose pour le multitail? Voici une question: unix.stackexchange.com/questions/239774/…
fraxture
Je ne peux pas faire fonctionner cela comme un alias dans mon .bashrc
Kdansky
1
@Kdansky: Vous n'avez pas montré comment vous avez défini l'alias ou quel type de problème vous rencontrez, je ne peux que deviner. Un problème que vous pourriez avoir est de citer. Un backslash supplémentaire peut aider: alias forward="tail -f file | sed 's/\\\n/\n/g'". Si vous souhaitez pouvoir spécifier le nom de fichier en tant qu'argument, vous devez utiliser une fonction au lieu d'un alias:forward () { tail -f "$@" | sed 's/\\n/\n/g'; }
pause jusqu'à nouvel ordre.
0
tail -1 file | awk '{gsub(/\\n/,"")}1'
user37841
la source