Home > front end >  BASH: split string on \n and store in array
BASH: split string on \n and store in array

Time:07-01

I have the following string that I read in from a file in bash

BOB_ENV: DEV\nStorage: @MOM.KV(Name=lol-lol;SCT=c-s-string)\nConn__name: ab-cb-ac-one.sb.w.net\nTest: Test

I am trying to make the \n the delimiter and store into an array

I am not sure if I am doing it properly but I have the following script

test="BOB_ENV: DEV\nStorage: @MOM.KV(Name=lol-lol;SCT=c-s-string)\nConn__name: ab-cb-ac-one.sb.w.net\nTest: Test"
arr=(`echo $test`)
echo ${arr[1]}

right now it splits the string on the spaces I have in the string and stores into the array. I want to split on the \n in the string.

CodePudding user response:

You can use printf '%b' to interpret \n as line break and read it into array using readarray:

s='BOB_ENV: DEV\nStorage: @MOM.KV(Name=lol-lol;SCT=c-s-string)\nConn__name: ab-cb-ac-one.sb.w.net\nTest: Test'

# read into array
readarray -t arr < <(printf '%b\n' "$s")

# check array content
declare -p arr

Output:

declare -a arr=([0]="BOB_ENV: DEV" [1]="Storage: @MOM.KV(Name=lol-lol;SCT=c-s-string)" [2]="Conn__name: ab-cb-ac-one.sb.w.net" [3]="Test: Test")

  •  Tags:  
  • bash
  • Related