Necesitamos extraer la columna de la salida del comando. Probé los métodos usando awk y los comandos de corte. Mientras que tenemos espacios en los valores de la segunda columna debido a que el delimitador de espacio u otro carácter no analiza la salida de la segunda columna de manera correcta. ¿Tenemos otro método para obtener únicamente la segunda columna del resultado como se mencionó anteriormente?
# cat info.txt
Vmid Name File
369 DO-NOT-DELL [datastore1] DO-NOT-DELL/DO-NOT-DELL.vmx
389 VMware vCenter Server [datastore1] VMware vCenter Server/VMware vCenter Server.vmx
390 Auth-vcenter-Don't delete [datastore1] Auth-vcenter-Don't delete/Auth-vcenter-Don't delete.vmx
393 VirtualMachine [datastore1] VirtualMachine/VirtualMachine.vmx
9 Server 2005 for VM (dev team) [datastore1] Server 2005 for VM (dev team)
# cat info.txt | awk '{print $2}'
DO-NOT-DELL
VMware
Auth-vcenter-Don't
VirtualMachine
Server
Como en el resultado anterior de una segunda columna, no tenemos el valor completo como en el archivo original.
Respuesta1
Es posible analizarcolumnas de ancho fijo con GNU awk:
La división de un registro de entrada en campos de ancho fijo se especifica asignando una cadena que contiene números separados por espacios a la variable incorporada
FIELDWIDTHS
. Cada número especifica el ancho del campo, incluidas las columnas entre campos. Si desea ignorar las columnas entre campos, puede especificar el ancho como un campo separado que se ignora posteriormente.
% awk -v FIELDWIDTHS="7 37 *" '{print $2}' foo
Name
DO-NOT-DELL
VMware vCenter Server
Auth-vcenter-Don't delete
VirtualMachine
Server 2005 for VM (dev team)
También puede usar una expresión regular como separador de campos para dividir el texto, por ejemplo, usando 3 o más espacios como FS:
% awk -F ' {3,}' '{print $2}' foo
Name
DO-NOT-DELL
VMware vCenter Server
Auth-vcenter-Don't delete
VirtualMachine
Server 2005 for VM (dev team)
Respuesta2
También encontré un buen enfoque de uno de mis amigos para obtener la lista de máquinas virtuales.
# cat info.txt | tr -s " " | cut -d "[" -f1 | cut -d " " -f2- | tail -n +2
DO-NOT-DELL
VMware vCenter Server
Auth-vcenter-Don't delete
VirtualMachine
Server 2005 for VM (dev team)
Respuesta3
Convierta espacios en tabulaciones con posiciones de tabulación no predeterminadas:
unexpand -t 7,44 info.txt | cut -f2