计算文档a.txt中每一行中出现的数字个数并且要计算一下整个文档中一共出现了几个数字。
例如a.txt内容如下: 12aa*lkjskdj alskdflkskdjflkjj
我们脚本名字为 ncount.sh, 运行它时: bash ncount.sh a.txt 输出结果应该为:2 0 sum:2
核心要点
sed删除非数字并计算个数 wc -L
for循环计算总和while read line ;do ;done < file.txt
遍历文件内容
由于一行中可能出现空格的情况 用for i in $(cat a.txt)会出现一行显示为两行的情况,可以使用while read line或者下面的forwhile read line ; do echo $line ;done < a.txt
for i in $(seq 1 $(wc -l a.txt |awk '{print $1}'));do sed -n "$i"p a.txt ;done
代码内容
1 |
|
或者1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#
#program:
# 计算数字个数
#
#history:
#2019/09/18 kun V1.0
sum=0
for i in $(seq 1 `wc -l $1 |awk '{print $1}'`)
do
a=$(sed -n "$(echo $i)p" $1)
n=$(echo "$a"|sed 's/[^0-9]//g'|wc -L)
echo $n
sum=$[$sum+$n]
done
echo "sum:$sum"