Shell

在分隔符上分割長線

  • March 16, 2022

我可以使用什麼命令來拆分輸入,如下所示:

foo:bar:baz:quux

進入這個?

foo
bar
baz
quux

我試圖弄清楚該cut命令,但它似乎只適用於固定數量的輸入,例如“前 1000 個字元”或“前 7 個欄位”。我需要使用任意長的輸入。

有幾個選項:

  • tr : \\n
  • sed 's/:/\n/g'(使用 GNU sed)
  • awk '{ gsub(":", "\n") } 1'

您也可以在 pure 中執行此操作bash

while IFS=: read -ra line; do
   printf '%s\n' "${line[@]}"
done
$ line=foo:bar:baz:quux
$ words=$(IFS=:; set -- $line; printf "%s\n" "$@")
$ echo "$words"
foo
bar
baz
quux

引用自:https://unix.stackexchange.com/questions/58189