写一个bash脚本,统计一个文本文件nowcoder.txt中每一行出现的1~5数字的个数,并且计算一下整个文档中一共出现了几个1~5数字的总数。
示例:
假设 nowcoder.txt 内容如下:
a12b8
10ccc
2521abc
9asf
你的脚本应当输出:
line1 number: 2
line2 number: 1
line3 number: 4
line4 number: 0
sum is 7
说明:
不要担心你输出的空格以及换行的问题
a12b8 10ccc 2521abc 9asf
line1 number: 2 line2 number: 1 line3 number: 4 line4 number: 0 sum is 7
#!/bin/bash i=0 sum=0 while read -r line do ((i+=1)); number=$(echo $line|grep -Eo '[1-5]'|wc -l) echo "line$i number: $number" ((sum+=number)); done echo "sum is $sum"
#!/bin/bash
lineNum=$(cat nowcoder.txt | wc -l)
sum=0
for ((i=1;i<=lineNum;i++))
do
num=$(sed -n ${i}p nowcoder.txt | grep -o -E "1|2|3|4|5" | wc -l)
sum=$[$sum + $num]
echo "line${i} number:$num"
done
echo sum is $sum awk '
{
split($0,a,"")
cnt = 0
n = length(a)
for (i = 0; i < n; i++) {
if (a[i] == 1 || a[i] == 2 || a[i] == 3 || a[i] == 4 || a[i] == 5) cnt++
}
print("line"NR, "number:", cnt)
sum += cnt
}
END { print("sum is " sum) }
'