Vous cherchez quelque chose comme ça ? Vous avez des idées ?
cmd | prepend "[ERRORS] "
[ERROR] line1 text
[ERROR] line2 text
[ERROR] line3 text
... etc
Vous cherchez quelque chose comme ça ? Vous avez des idées ?
cmd | prepend "[ERRORS] "
[ERROR] line1 text
[ERROR] line2 text
[ERROR] line3 text
... etc
Je voulais une solution qui gère stdout et stderr, donc j'ai écrit prepend.sh
et le mettre sur mon chemin :
#!/bin/bash
prepend_lines(){
local prepended=$1
while read line; do
echo "$prepended" "$line"
done
}
tag=$1
shift
"$@" > >(prepend_lines "$tag") 2> >(prepend_lines "$tag" 1>&2)
Maintenant je peux juste lancer prepend.sh "[ERROR]" cmd ...
pour ajouter "[ERROR]" à la sortie de l'application cmd
et avoir toujours stderr et stdout séparés.
cmd | xargs -L 1 -i echo "prefix{}"
ou encore plus facilement dans le cas prefix
est séparée de la ligne elle-même par un espace
cmd | xargs -L 1 echo prefix
Ce n'est pas très efficace du point de vue des performances, mais c'est court à écrire.
Il fonctionne en exécutant echo
une fois pour chaque ligne d'entrée. xargs
vous permet également de traiter \0
-lignes délimitées.
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.