Quitar saltos de línea en Bourne Shell partir de una variable
-
21-09-2019 - |
Pregunta
En shell bourne tengo los siguientes:
VALUES=`some command that returns multiple line values`
echo $VALUES
se ve así:
"ONE"
"TWO"
"THREE"
"FOUR"
Me gustaría que se vea como:
"ONE" "TWO" "THREE" "FOUR"
¿Alguien puede ayudar?
Solución
echo $VALUES | tr '\n' ' '
Otros consejos
Otro método, si quiere no sólo imprimir su código, pero asignarlo a una variable, y no tener un espacio espurio al final:
$ var=$(tail -1 /etc/passwd; tail -1 /etc/passwd)
$ echo "$var"
apache:x:48:48:Apache:/var/www:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
$ var=$(echo $var)
$ echo "$var"
apache:x:48:48:Apache:/var/www:/sbin/nologin apache:x:48:48:Apache:/var/www:/sbin/nologin
La solución aceptada no funcionó para mí (en OS X Yosemite). Esto es lo que he utilizado:
echo -n $VALUES
Otra opción es usar xargs
(que mantiene un salto de línea final de embargo - en lugar de un posible uso de espacio final tr
):
echo $VALUES | xargs
printf '%s\n' 1 2 3 4 5 | xargs
@yozloy: cómo pasar cadena escapada utilizando <<<
tr -d '\n' <<< "`printf '%b' 'a line with line feed \n'`"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow