eolas/Programming_Languages/Shell/Split_into_array.md
2023-02-04 09:26:34 +00:00

985 B

categories tags
Programming Languages
shell

Splitting input into an array

readarray

readarray makes it really easy to split input into an array based on new lines. Say we have this file as input:

123
456
789

Then we can split like so:

readarray -t name_for_array < ./input.text

# Print all elements
echo "${name_for_array[@]}"

# Print element by index

echo "${name_for_array[1]}"
456

If we want to read direct from string within bash file:

readarray -t new_name_for_array <<< "here
is
some
text"

echo "${new_name_for_array[1]}"
is

The -t flag removes the trailing newline

Add more: https://linuxhint.com/split-string-array-bash/

read

For different delimiters we have to use read, combined with IFS the Internal Field Separator.

For example, to split by comma:

# comma-input.txt
something, something else, something more
IFS=',' read -a arr < ./comma_inputs.txt