我有一个文件,其中包含随机位置的单词和数字。我必须编写一个shell脚本来添加文件中的所有数字。
我想到了这样的事情:
filename=$1
words=` echo $filename `
sum=0
for word in words;
do
#if $word is number, add to sum
done
如何验证shell中是否有数字?或者这整个方法都错了?
答案 0 :(得分:0)
你可以用exacmle来表示:
grep -ow '[0-9]*' file | awk '{count+=$1} END{print count}'
grep -ow '[0-9]*' file
获取文件的所有数字块。 -w
仅匹配字词,因此a23b
不会匹配。awk '{count+=$1} END{print count}'
遍历grep
结果,将每个数字添加到count
变量。最后,打印结果。$ cat a
aa b23 23 55
adf 23 23 62l
$ grep -ow '[0-9]*' a | awk '{count+=$1} END{print count}'
124
$ grep -ow '[0-9]*' a
23
55
23
23
答案 1 :(得分:0)
这是一个bash版本:
while read line; do
set $line
while (( $# > 0 )); do
[[ "$1" =~ ^[0-9]+$ ]] && n="$1" && (( total += n ))
shift
done
done
echo $total