回答:
$ line=foo:bar:baz:quux
$ words=$(IFS=:; set -- $line; printf "%s\n" "$@")
$ echo "$words"
foo
bar
baz
quux
grepがサポートしている場合、次の-oようにできます。
grep -o '[^:]\+'
または、awkを使用して、レコード区切り文字を:次のように設定します。
awk -v RS=: 1
またはGNUカットを使用:
cut -d: --output-delimiter=$'\n' -f1-
以下のChrisが述べたように、これは末尾の改行を残します。awk RSが正規表現(GNU awkでテスト済み)として指定することをサポートしている場合、これは回避できます。
awk -v RS='[:\n]' 1
awk例は、(おそらく望ましくない)末尾の改行を残します。
tr : '\n' < input?