zoukankan      html  css  js  c++  java
  • go语言实现筛选数据

    package main
    
    import (
        "bufio"
        "fmt"
        "io"
        "os"
        "regexp"
        "strings"
    )
    
    func main() {
        fileName := "log.log"
        file, err := os.OpenFile(fileName, os.O_RDWR, 0666)
        if err != nil {
            fmt.Println("Open file error!", err)
            return
        }
        defer file.Close()
    
        stat, err := file.Stat()
        if err != nil {
            panic(err)
        }
    
        var size = stat.Size()
        fmt.Println("file size=", size)
        buf := bufio.NewReader(file)
        f, err := os.Create("筛选的数据.txt")
        defer f.Close()
        for {
            line, err := buf.ReadString('
    ')
            line = strings.TrimSpace(line)
            go findLine(line)
            if err != nil {
                if err == io.EOF {
                    fmt.Println("File read ok!")
                    break
                } else {
                    fmt.Println("Read file error!", err)
                    return
                }
            }
        }
    }
    func findLine(line string) {
        str := line
        ipret := regexp.MustCompile(`([0-9]{1,3}.){3}[0-9]{1,3}`)
        timeret := regexp.MustCompile(`[(.+)]`)
        articleret := regexp.MustCompile(`http://www.neusoft.com/article/[0-9]{1,4}`)
        videoret := regexp.MustCompile(`http://www.neusoft.com/video/[0-9]{1,4}`)
        ip := ipret.FindAllStringSubmatch(str, -1)
        time := timeret.FindAllStringSubmatch(str, -1)
        article := articleret.FindAllStringSubmatch(str, -1)
        video := videoret.FindAllStringSubmatch(str, -1)
        f, err := os.OpenFile("筛选的数据.txt", os.O_WRONLY, 0644)
        if err != nil {
            fmt.Println("cacheFileList.yml file create failed. err: " + err.Error())
        } else {
            /*fmt.Println("all:", alls)*/ /*fmt.Println("all:", alls)*/
            if ip != nil {
    
                n, _ := f.Seek(0, os.SEEK_END)
                // 从末尾的偏移量开始写入内容
                _, err = f.WriteAt([]byte("ip:	"+ip[0][0]+"/t"), n)
                fmt.Printf("ip:%s	", ip[0][0])
            }
    
            for _, one := range time {
                n, _ := f.Seek(0, os.SEEK_END)
                // 从末尾的偏移量开始写入内容
                _, err = f.WriteAt([]byte("time:	"+one[0]+"/t"), n)
                fmt.Printf("时间:%s	", one[0])
            }
            for _, one := range article {
                n, _ := f.Seek(0, os.SEEK_END)
                // 从末尾的偏移量开始写入内容
                _, err = f.WriteAt([]byte("article:	"+one[0]+"/t"), n)
                fmt.Printf("时间:%s	", one[0])
            }
            for _, one := range video {
                n, _ := f.Seek(0, os.SEEK_END)
                // 从末尾的偏移量开始写入内容
                _, err = f.WriteAt([]byte("video:	"+one[0]+"/t"), n)
                fmt.Printf("时间:%s	", one[0])
            }
            n, _ := f.Seek(0, os.SEEK_END)
            _, err = f.WriteAt([]byte("
    "), n)
        }
    }
    https://necydcy.me/
  • 相关阅读:
    SQL server分离和附加数据库
    sql-server的添加数据库文件(日志数据)以及收缩数据库文件(日志数据)
    sql语句中的join用法(可视化解释)
    SQL语句(floor、ceiling和round以及left和right)
    怎样重新获得别人的信任-知识就是力量(思维导图)
    怎样让孩子爱上学习-知识就是力量(思维导图)
    洛谷-P1036 选数
    洛谷-P1028 数的计算
    洛谷-P1914 小书童——密码
    洛谷-P1598 垂直柱状图
  • 原文地址:https://www.cnblogs.com/miria-486/p/10066916.html
Copyright © 2011-2022 走看看