我有一個基本上來自 /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
答案4
如果您想使用 awk (類似列印由 OFS 分隔的 AWK 的所有字段):
echo "bob,john,jane,sam,joyce" | awk 'BEGIN {FS=","; OFS="\n"} {$1=$1; print $0}'