將逗號分隔的行變成 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 (類似列印由 OFS 分隔的 AWK 的所有字段):

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

相關內容