Eu tenho uma lista de usuários basicamente de/etc/group, gostaria basicamente de formatar essa linha em uma coluna, só preciso dos usuários. Então, se um campo for assim:
bob,john,jane,sam,joyce
Então eu gostaria que ficasse assim
bob
john
jane
sam
joyce
Eu sei fazer o oposto, mas não desse tipo.
Responder1
Você pode fazer isso com sed:
sed 's/,/\n/g'
Isso substitui todas as ocorrências de ,
por uma nova linha. g
faz com que o sed substitua todas as ocorrências em uma linha em vez de apenas a primeira.
Responder2
Para responder usando suas tags sugeridas:
festa:
$ IFS=, read -a names <<< "bob,john,jane,sam,joyce"
$ printf "%s\n" "${names[@]}"
bob
john
jane
sam
joyce
estranho:
$ echo "bob,john,jane,sam,joyce" | awk -F, -v OFS="\n" '{$1=$1; print}'
bob
john
jane
sam
joyce
O $1=$1
bit é uma expressão awk para reescrever o registro atual usando os Separadores de Campo de Saída, o que não acontece a menos que algum campo seja modificado.
Responder3
Responder4
Se você quiser usar o awk (semelhante aoImprima todos os campos com AWK separados por OFS):
echo "bob,john,jane,sam,joyce" | awk 'BEGIN {FS=","; OFS="\n"} {$1=$1; print $0}'