Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

168
Views
Imprima solo la columna 'Nombres' de la salida 'docker-container ls -la'

Al emitir el docker container ls -la , el resultado se ve así:

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a67f0c2b1769 busybox "tail -f /dev/null" 26 seconds ago Up 25 seconds recursing_liskov

Me gustaría obtener solo el nombre del contenedor presente en la columna Names .

Mi idea era usar bash para invertir las columnas en la salida del comando para colocar la columna Names en la primera posición y cortar el nombre del contenedor.

Esto es lo que probé:

 sudo docker container ls -la | rev |tail -n +2 | tr -s ' ' | cut -d ' ' -f 1

Sin embargo, esto no da el resultado esperado y aparece el siguiente error:

 rev: stdin: Invalid or incomplete multibyte or wide character

Estoy atascado porque no sé cómo manejar este error. ¿Se puede arreglar para obtener el resultado que espero? ¿O hay alguna otra forma de obtener mi resultado?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

En lugar de jugar con una salida predeterminada, simplemente imprima exactamente lo que está buscando desde el principio. La mayoría de los subcomandos de la ventana acoplable aceptan una opción --format que tomará una expresión de plantilla go para especificar lo que desea exactamente.

En su caso, creo que el siguiente comando debería dar lo que está buscando:

 $ docker container ls -la --format "{{.Names}}" recursing_liskov

Por supuesto, puede agregar más columnas si lo desea, en el orden que mejor se adapte a sus necesidades. Puede obtener fácilmente una lista de todas las claves disponibles con algo como:

 $ docker container ls -la --format "{{json .}}" | jq { "Command": "\"tail -f /dev/null\"", "CreatedAt": "2022-01-15 23:43:54 +0100 CET", "ID": "a67f0c2b1769", "Image": "busybox", "Labels": "", "LocalVolumes": "0", "Mounts": "", "Names": "recursing_liskov", "Networks": "bridge", "Ports": "", "RunningFor": "20 minutes ago", "Size": "0B (virtual 1.24MB)", "State": "running", "Status": "Up 20 minutes" }

Aquí hay un ejemplo solo para ilustrar el uso de algunos de los campos:

 $ docker container ls -la --format "container {{.Names}} is in state {{.State}} and has ID {{.ID}}" container recursing_liskov is in state running and has ID a67f0c2b1769

Algunas referencias aleatorias de varias que usé:

  • https://devcoops.com/filter-output-of-docker-image-ls/
  • https://windsock.io/customising-docker-cli-output/
over 4 years ago · Santiago Trujillo Report

0

No estoy seguro de haber entendido tu pregunta, pero si solo quieres reorganizar el orden de las columnas, puedes usar awk y su función printf . No es la forma más elegante, pero dependiendo de su caso de uso, podría funcionar para usted.

Por ejemplo, puede usar lo siguiente para un comando de salida de dos columnas:

 cmd | awk '{printf ("%s\t%s\n", $1, $2)}'

De la misma manera, podrías hacer:

 docker container ls -la | awk '{printf ("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", $8, $1, $2, $3, $4, $5, $6, $7)}'

Como dije, esto puede considerarse una solución sucia, pero no estoy seguro de lo que exige su caso de uso. Tenga en cuenta que la primera fila con el nombre de las columnas no será tan bonita como lo es de forma predeterminada. Puede arreglar eso dando a cada uno de los elementos un ancho (máximo) ( %5s establece un ancho de 5).

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!