Deepak Bisht
Deepak Bisht

Reputation: 45

Bash script to read from a file and save the information in an array?

I want to read from a file that has host IPs written in it and save it in an array. So far I have tried this:

Host=`cat /home/hp3385/Desktop/config | egrep '^Host' | awk '{print $2}'`

But I don't think that it saves the information in an array. What is the type of the variable 'Host'? If it's not an array how can I convert it into one? This is a sample data from the file /home/hp3385/Desktop/config:

############# Server1 #################
Host 8.8.8.8
Hostname google

############# Server2 ################
Host 8.8.4.4
Hostname google

The expected output is: a=($'8.8.8.8' $'8.8.4.4')

Upvotes: 0

Views: 62

Answers (2)

Anyesto
Anyesto

Reputation: 11

Declaring an array:

ARRAY=(0 1 2 3 4 5)

So your array can be declared like this:

HOSTS=($(awk '/^Host/ {print $2}' YOUR_FILE))

If you want to know the amount of values in your array:

echo ${#HOSTS[*]}

To get an output of all values in your array (credit goes to triplee):

printf '%s\n' "${HOSTS[@]}"

Upvotes: 1

nullPointer
nullPointer

Reputation: 4574

You can try this

myarray=()
while read -r line; do
  if echo "$line" | grep -q 'Host '; then
     myarray+=($(echo "$line" | awk '/^Host/ {print $2}'))
  fi
done < /home/hp3385/Desktop/config 

Upvotes: 1

Related Questions