Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

311
Vistas
cómo mostrar usuarios en un grupo en una línea para cada usuario en Linux bash

Actualmente, cuando ejecuto un comando grep en un grupo de visitantes que había creado

 grep visitors:x:1011: /etc/group

Este es un resultado de muestra del comando anterior, ya que el resultado real es demasiado largo.

 visitors:x:1011:ellipsiscoterie,magnetcommonest,wizardmeans,beakskeletal,lemonwellmade,ralphpaperclips etc..

¿Cómo muestro el resultado anterior como se muestra a continuación (sin visitantes: x: 1101 y separando las comas), ya que tengo dificultades para hacerlo?

 ellipsiscoterie magnetcommonest wizardmeans beakskeletal lemonwellmade ralphpaperclips
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Sugiero usar sed en lugar de grep

 sed -n -e 's/^visitors\:x\:1011\://p' /etc/group | tr ',' '\n'

UPD: la explicación detallada de la parte sed está aquí . tr ejemplos que puedes encontrar aquí

over 4 years ago · Santiago Trujillo Denunciar

0

Usando awk, puede configurar el campo separado por dos puntos usando -F: y verificar si la cadena comienza con visitors:x:1011:

Como los valores separados por comas siempre parecen estar al final, divida el último campo $NF en una coma y repita los valores divididos.

 awk -F: ' /^visitors:x:1011:/ { count=split($NF, ary, ","); for(i=1; i<=count; i++) print ary[i]; }' /etc/group
over 4 years ago · Santiago Trujillo Denunciar

0

Con las muestras mostradas, intente seguir el programa awk .

 awk -F':' '/^visitors:x:1011/ && NF==4{gsub(/,/,ORS,$4);print $4}' /etc/group

O en caso de que la entrada de visitors:x:1011 aparezca solo una vez en su archivo, intente lo siguiente:

 awk -F':' '/^visitors:x:1011/ && NF==4{gsub(/,/,ORS,$4);print $4;exit}' /etc/group

Explicación: la explicación simple sería hacer que el separador de campo sea : para todas las líneas. Luego, en el programa principal, verifique la condición si la línea comienza desde visitors:x:1011 y el número de campos es 4, luego sustituya globalmente la coma con una nueva línea (ORS) en el cuarto campo e imprímalo.



O si la línea con visitors:x:1011 viene una vez y el cuarto campo es NULL (significa que no hay entrada presente, lo cual es obvio en algunos casos) y desea imprimir el mensaje, intente lo siguiente:

awk -F':' '/^visitors:x:1011/ && NF==4{if($4==""){print "NO entry found in /etc/group"} else{gsub(/,/,ORS,$4);print $4};exit}' /etc/group

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda