Convierta filas separadas por comas en 1 columna

Convierta filas separadas por comas en 1 columna

Tengo una lista de usuarios básicamente de /etc/group. Básicamente, me gustaría formatear esa línea en una columna, solo necesito los usuarios. Entonces, si un campo se ve así:

bob,john,jane,sam,joyce

Entonces me gustaría que se viera así

bob
john
jane
sam
joyce

Sé hacer lo contrario pero no este tipo.

Respuesta1

Puedes hacer esto con sed:

sed 's/,/\n/g'

Esto reemplaza todas las apariciones de ,con una nueva línea. ghace que sed reemplace todas las apariciones en una línea en lugar de solo la primera.

Respuesta2

Para responder usando las etiquetas sugeridas:

intento:

$ IFS=, read -a names <<< "bob,john,jane,sam,joyce"
$ printf "%s\n" "${names[@]}"
bob
john
jane
sam
joyce

mal:

$ echo "bob,john,jane,sam,joyce" | awk -F, -v OFS="\n" '{$1=$1; print}'
bob
john
jane
sam
joyce

El $1=$1bit es un modismo extraño para reescribir el registro actual usando los separadores de campo de salida, lo cual no sucede a menos que se modifique algún campo.

Respuesta3

Podrías hacer esto con buscar y reemplazar en vim:

:%s/,/\r/g

Verestepregunta...

Respuesta4

Si desea utilizar awk (similar aImprima todos los campos con AWK separados por OFS):

echo "bob,john,jane,sam,joyce" | awk  'BEGIN {FS=","; OFS="\n"} {$1=$1; print $0}'

información relacionada