Comprender el resultado de cut -f

Comprender el resultado de cut -f

Gracias por su paciencia. Soy nuevo en Linux y quería ayuda para entender cómo puedo analizar el resultado del comando de corte.

Entonces, actualmente tengo una variable

x=$(discover nginx --human=nood | cut -f1,6)

Entonces mi salida echo "$xes una lista de cosas como

ID de instancia Dirección IP

En mi programa quiero ejecutar un bucle for sobre cada fila de x y extraer la primera y la segunda variable por separado. Por ejemplo: si fuera una matriz a[0] = ID de instancia y a[1]= IPAdderess

¿Alguien puede guiarme sobre cómo extraer los elementos por separado? Sé que puedo ejecutar un bucle $xy hacer un corte dentro de él, pero estoy tratando de entender si hay una mejor manera de hacerlo.

Respuesta1

Para eso, no necesita almacenar los datos en una variable en absoluto, discoverbastará con un bucle sobre la salida de:

discover nginx --human=nood | cut -f 1,6 |
while read -r instanceID IPAddress; do
    # Use "$instanceID" and "$IPAddress" here
done

Alternativamente, en basho un shell que comprenda las sustituciones de procesos ( <( ... )):

while read -r instanceID IPAddress; do
    # Use "$instanceID" and "$IPAddress" here
done < <( discover nginx --human=nood | cut -f 1,6 )

La diferencia entre estos dos solo es visible si quieres llevar los valores de alguna variablefuera de la lupa. En el primer ejemplo, el bucle se ejecutará en una subcapa y, por lo tanto, no podrá utilizar ningún valor de las variables que se establezcan dentro del bucle.despuésel bucle (existen en su propio entorno local).

En el segundo ejemplo, no hay subcapas involucradas (excepto la que ejecuta la sustitución del proceso con discovery cut), por lo que se puede acceder a los valores de las variables después del ciclo.

información relacionada