Превратить строки, разделенные запятыми, в 1 столбец

Превратить строки, разделенные запятыми, в 1 столбец

У меня есть список пользователей в основном из /etc/group, я хотел бы в основном отформатировать эту строку в один столбец, мне нужны только пользователи. Так что если поле выглядит так:

bob,john,jane,sam,joyce

Тогда я бы хотел, чтобы это выглядело вот так.

bob
john
jane
sam
joyce

Я знаю, как сделать наоборот, но не этот тип.

решение1

Это можно сделать с помощью sed:

sed 's/,/\n/g'

Это заменит все вхождения на ,новую строку. gЗаставит sed заменить все вхождения в строке, а не только первое.

решение2

Чтобы ответить, используя предложенные вами теги:

Баш:

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

awk:

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

Этот $1=$1бит представляет собой идиому awk для перезаписи текущей записи с использованием разделителей выходных полей, что не происходит, если какое-либо поле не изменено.

решение3

Это можно сделать с помощью поиска и замены vim:

:%s/,/\r/g

Видетьэтотвопрос...

решение4

Если вы хотите использовать awk (похож наРаспечатать все поля с AWK, разделенные OFS):

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

Связанный контент