Durch Kommas getrennte Zeilen in eine Spalte umwandeln

Durch Kommas getrennte Zeilen in eine Spalte umwandeln

Ich habe eine Liste von Benutzern aus /etc/group. Ich möchte diese Zeile grundsätzlich in eine Spalte formatieren, ich brauche nur die Benutzer. Wenn ein Feld also so aussieht:

bob,john,jane,sam,joyce

Dann hätte ich es gerne so

bob
john
jane
sam
joyce

Ich weiß, wie man das Gegenteil macht, aber nicht diese Art.

Antwort1

Dies können Sie mit sed tun:

sed 's/,/\n/g'

Dies ersetzt alle Vorkommen ,durch einen Zeilenumbruch. gbewirkt, dass sed alle Vorkommen in einer Zeile ersetzt, nicht nur das erste.

Antwort2

So antworten Sie mit Ihren vorgeschlagenen Tags:

bash:

$ 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

Das $1=$1Bit ist eine Awk-Redewendung, um den aktuellen Datensatz unter Verwendung der Ausgabefeldtrennzeichen neu zu schreiben, was nicht geschieht, sofern nicht ein Feld geändert wird.

Antwort3

Sie können dies mit einer Suchen-und-Ersetzen-Funktion in tun vim:

:%s/,/\r/g

SehenDasFrage...

Antwort4

Wenn Sie awk verwenden möchten (ähnlich wieAlle Felder mit AWK durch OFS getrennt drucken):

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

verwandte Informationen