How to split a multi-line string containing the characters “
” into an array of strings in bash?
本问题已经有最佳答案,请猛点这里访问。
我有一个以下格式的字符串:
1 2 3 4 5 6 7 8 9 | I'm Ned Nederlander I'm Lucky Day I'm Dusty Bottoms |
我想把它逐行移动到字符串数组中,以便:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $ echo"${ARRAY[0]}" I'm Ned Nederlander $ echo"${ARRAY[1]}" I'm Lucky Day $ echo"${ARRAY[2]}" I'm Dusty Bottoms |
但是,我遇到了字符串本身中的"字符的问题。它们在字符串中表示为两个独立的字符,反斜杠和"n",但当我尝试进行数组拆分时,它们被解释为换行符。因此,使用
例如:
1 2 3 4 5 6 7 8 9 | $ read -a ARRAY <<<"$STRING" $ echo"${#ARRAY[@]}" # print number of elements 2 $ echo"${ARRAY[0]}" I'mnNednNederla $ echo"${ARRAY[1]}" der |
用默认的,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | string="I'm Ned Nederlander I'm Lucky Day I'm Dusty Bottoms" arr=() while read -r line; do arr+=("$line") done <<<"$string" |
为了做这个,在一号线(就像你是attempting与
1 | mapfile -t arr <<<"$string" |
1 2 | IFS=$' ' read -d '' -r -a arr <<<"$string" |