Kadana Kanz
Kadana Kanz

Reputation: 197

Column separation inside shell script

If I have file.txt with the data:

abcd!1023!92
efgh!9873!xk

and a basic tutorial.sh file which goes through each line

while read line
do
   name = $line
done < $1

How do I separate the data between the "!" into a column and select the second column and add them? (I am aware of the "sed -k 2 | bc " function but I can't/ do not understand how to get it to work with a shell script.

Upvotes: 1

Views: 104

Answers (2)

glenn jackman
glenn jackman

Reputation: 246799

To adjust your while loop:

while IFS='!' read -r a b c
do
   ((sum += b))
done < "$1"                  # always quote "$vars"
echo "$sum"

IFS is the shell's "internal field separator" used for splitting strings into words. It's normally "whitespace" but you can use it for your specific needs.

Upvotes: 1

anubhava
anubhava

Reputation: 785088

You can use awk:

awk -F '!' '{sum += $2} END{print sum}' file
10896

Upvotes: 1

Related Questions