功能: 获取一个文件中,统计每行 短号的数量,然后对数量进行归类 ,如 短号小于对于5个的 出现的行数。
在 http://blog.sina.com.cn/s/blog_79a0eceb0101aoy2.html 地址上获取,进行部分修改
package main
import (
"bufio"
"fmt"
"os"
"strings"
"time"
)
func Readln(r *bufio.Reader) (string, error) {
var (
isPrefix bool = true
err error = nil
line, ln []byte
)
for isPrefix && err == nil {
line, isPrefix, err = r.ReadLine()
ln = append(ln, line...)
}
return string(ln), err
}
func readTaskList() {
var k5, k10, k15, k20, kbig int
task_list_path := "C:\\Users\\win7\\Documents\\0101001\\RecvFiles\\e_150812\\ee_150812.txt"
f, err := os.Open(task_list_path)
defer f.Close()
if err != nil {
fmt.Printf("error opening file; %v\n", err)
os.Exit(1)
}
r := bufio.NewReader(f)
s, e := Readln(r)
var k int
for e == nil {
if len(s) > 2 {
// fmt.Println(len(s), s, len(strings.Split(s, ",")))
k = len(strings.Split(s, ","))
switch {
case k <= 5:
k5 += 1
case k <= 10:
k10 += 1
case k <= 15:
k15 += 1
case k <= 20:
k20 += 1
default:
kbig += 1
//fmt.Println(k)
}
if k > 20 {
fmt.Println(len(s), s, len(strings.Split(s, ",")))
}
}
s, e = Readln(r)
}
fmt.Println(k5, k10, k15, k20, kbig)
}
func main() {
t := time.Now()
readTaskList()
t2 := time.Now()
fmt.Println("total cost: ", t2.Sub(t))
}
文件 ee_150812.txt 的内容为:
116,108,203,117
119
118
119
113,107,104,117,115
133,116,106,118,203
106,111,117,116,118,121,113,203,106,111,117,116,118,121,113,203,106,111,117,116,118,121,113,203,106,111,117,116,118,121,113,203
108
125
104
116,119,117,203,108
116
116
118
133,116,115,118
119
120
107
运行结果为:
127 106,111,117,116,118,121,113,203,106,111,117,116,118,121,113,203,106,111,117,116,118,121,113,203,106,111,117,116,118,121,113,203 32
17 0 0 0 1
total cost: 1.0001ms