Mam ciąg w następującym formacie:Jak podzielić wieloliniowy ciąg zawierający znaki " n" na tablicę ciągów w bash?
I'm\nNed\nNederlander
I'm\nLucky\nDay
I'm\nDusty\nBottoms
Chciałbym przenieść to do tablicy ciągów linii przez linię takie, że:
$ echo "${ARRAY[0]}"
I'm\nNed\nNederlander
$ echo "${ARRAY[1]}"
I'm\nLucky\nDay
$ echo "${ARRAY[2]}"
I'm\nDusty\nBottoms
Jednak jestem napotyka problemy z "\ n" znakami w samym ciągu. Są one reprezentowane w łańcuchu jako dwa oddzielne znaki, ukośnik odwrotny i "n", ale kiedy próbuję zrobić podział tablicy, interpretuje się je jako znaki nowej linii. W związku z tym typowe dzielenie ciągów za pomocą IFS
nie działa.
Na przykład:
$ read -a ARRAY <<< "$STRING"
$ echo "${#ARRAY[@]}" # print number of elements
2
$ echo "${ARRAY[0]}"
I'mnNednNederla
$ echo "${ARRAY[1]}"
der
BTW, czy ktoś wie jak to naprawić SE okropne formatowanie powyższego kodu? –
"Okropne formatowanie" spowodowane jest tym, że apostrofy są interpretowane jako pojedyncze cytaty (które powinny być zrównoważone). Użyj tagów "block quote" zamiast tagów "code". – twalberg