MLSC
MLSC

Reputation: 5972

cut command to delimit the output and add them

I am new in bash I wrote a bash script and it gives me an output like this:

3387 /test/file1
23688 /test/file2
5813 /test/file3
10415 /test/file4
1304 /test/file5
46 /test/file6
8 /test/file7
138 /test/file8

I can delimit them by

 wc -l /path/to/$dir/test | cut -d" " -f1

how can I add numbers to eachother and caculate them? can I do:

output=`wc -l /path/to/$dir/test | cut -d" " -f1`

Is it possible to use "while" or "for" loop and add those numbers? how?

thank you in advance

Upvotes: 0

Views: 490

Answers (1)

Ray Toal
Ray Toal

Reputation: 88378

You want awk here to avoid explicit loops. If your output was in the file data.txt you could use:

$ awk '{sum += $1} END {print sum}' data.txt
44799

In your case, pipe the output of your script to awk:

$ your_script.sh | awk '{sum += $1} END {print sum}'

Since the output you gave in your question was the output of wc -l, try:

$ wc -l /path/to/$dir/test | awk '{sum += $1} END {print sum}'

(Aside for anyone else landing on this page: wc -l, when given wildcards, will also give you a total, but it's great to use awk in this case because you can deal directly with the total line count and pipe just that to another process.)

Upvotes: 1

Related Questions