Tres trucos para obtener la salida de dos comandos en un unica fila. Normalmente, las salidas de dos comandos siempre estarán separadas por un retorno de carro en la terminal de Linux.
Uno de los principales obstáculos en la creación de secuencias de comandos es lograr que sus resultados estén bien formateados de acuerdo con los requisitos. En Linux/Unix, cada comando muestra su salida siempre en una nueva línea. Este es un obstáculo en muchas situaciones en las que el codificador quiere dos salidas, dos términos, dos variables en una sola fila, por ejemplo, en formato CSV. En esta publicación, veremos cómo presentar la salida de dos o más comandos en una sola fila.
Lea también:Publicaciones relacionadas con secuencias de comandos
Normalmente, cuando ejecutamos más de un comando, mostrarán resultados en diferentes filas:
# date ; hostname Sat Dec 24 01:35:50 EDT 2016 testsrv2 # echo text1; echo text2; echo text3 text1 text2 text3
En el ejemplo anterior, los comandos tienen salidas por fila. Vamos a lograr todas las salidas en una fila usando los siguientes trucos.
Truco 1:
Uso de la función de traducción. Como dije antes, cada salida de comando va acompañada de un retorno de carro. Estaremos traduciendo el retorno de carro con el carácter de tabulación, por lo tanto, obtendremos dos o más comandos de salida en una sola fila.
# (date; hostname) |tr '\n' '\t' Sat Dec 24 01:36:22 EDT 2016 testsrv2 # (echo text1; echo text2; echo text3) |tr '\n' '\t' text1 text2 text3
Omitiendo las salidas para traducir la función, logramos una salida de una sola fila. Aquí instruimos a tr
función para traducir todos los retornos de carro (\n
) a la pestaña (\t
).
Si desea generar en formato CSV (valores separados por comas), reemplace la pestaña con una coma y lo obtendrá.
# (date; hostname) |tr '\n' ',' Sat Dec 24 01:43:09 EDT 2016,testsrv2, # (echo text1; echo text2; echo text3) |tr '\n' ',' text1,text2,text3,
Puede observar una coma final que muestra que cada salida de comando termina con \n y, por lo tanto, se reemplaza por ,
Truco 2:
Al definir cada salida de comando como una variable. Aquí almacenaremos la salida de cada comando en una variable y luego repetiremos esas variables en una sola línea.
# mydate=`date` # myname=`hostname` # echo $myname $mydate testsrv2 Sat Dec 24 01:46:04 EDT 2016
Aquí almacenamos la salida del comando de fecha y nombre de host en mydate
y myname
variables En el último comando, hicimos eco de ambas variables con un espacio entre ellas. ¡Tenga en cuenta que la salida de los comandos se puede almacenar en una variable ejecutando el comando usando acentos graves (ejecución en línea)!
Truco 3:
Haciendo eco de los resultados de ejecución en línea. Ejecución en línea, es decir, usar acentos graves para ejecutar comandos dentro de otro comando. Usaremos este truco para hacer eco de las salidas en una sola fila.
# echo "`date` `hostname`" Sat Dec 24 01:50:36 EDT 2016 testsrv2
En el ejemplo anterior, primero, ejecutamos comandos y obtuvimos resultados. Pero esas salidas se introducen en el comando de eco. Por lo tanto, el comando echo los coloca en una sola fila.
# echo "`echo text1` `echo text2` `echo text3`" text1 text2 text3
Tome nota de que ejecutamos cada comando en comillas posteriores separadas.