カンマ区切りの行を1列にする

カンマ区切りの行を1列にする

基本的に /etc/group からのユーザーのリストがあり、基本的にその行を 1 つの列にフォーマットしたいのですが、必要なのはユーザーだけです。フィールドが次のようになっているとします。

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(OFSで区切られたAWKのすべてのフィールドを印刷します):

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

関連情報