Actualmente, cuando ejecuto un comando grep en un grupo de visitantes que había creado
grep visitors:x:1011: /etc/groupEste 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 ralphpaperclipsUsando 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/groupCon 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