第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Golang 中查找模式的字節(jié)偏移量

在 Golang 中查找模式的字節(jié)偏移量

Go
縹緲止盈 2023-06-26 17:43:02
我們可以通過“grep -ob模式文件名”找到文件中模式的字節(jié)偏移量;然而,grep并不utf8安全。如何在 Go 中找到模式的字節(jié)偏移量?該文件是進程日志,可以以TB為單位。這就是我想要在 Go 中得到的:$ cat fnamehello worldfindmehello 世界findme again...$ grep -ob findme fname12:findme32:findme
查看完整描述

1 回答

?
元芳怎么了

TA貢獻1798條經(jīng)驗 獲得超7個贊

FindAllStringIndex(s string, n int)返回表達式所有連續(xù)匹配的字節(jié)開始/結(jié)束索引(即切片):

package main


import "fmt"

import "io/ioutil"

import "regexp"


func main() {

? ? fname := "C:\\Users\\UserName\\go\\src\\so56798431\\fname"

? ? b, err := ioutil.ReadFile(fname)

? ? if err != nil {

? ? ? panic(err)

? ? }


? ? re, err := regexp.Compile("findme")

? ? if err != nil {

? ? ? // handle error

? ? }

? ? fmt.Println(re.FindAllStringIndex(string(b), -1))

}

輸出:

[[12 18] [32 38]]

注意:我在 Microsoft Windows 上執(zhí)行此操作,但以 UNIX 格式(換行)保存文件;如果輸入文件以 Windows 格式保存(回車和換行),則字節(jié)偏移量將分別增加到 13 和 35。

更新:對于大文件,請使用bufio.Scanner;例如:

package main


import (

? ? "bufio"

? ? "fmt"

? ? "log"

? ? "os"

? ? "regexp"

)


func main() {

? ? fname, err := os.Open("C:\\Users\\UserName\\go\\src\\so56798431\\fname")

? ? if err != nil {

? ? ? ? log.Fatal(err)

? ? }

? ? defer fname.Close()


? ? re, err := regexp.Compile("findme")

? ? if err != nil {

? ? ? // handle error

? ? }


? ? scanner := bufio.NewScanner(fname)

? ? bytesRead := 0

? ? for scanner.Scan() {

? ? ? ? b := scanner.Text()

? ? ? ? //fmt.Println(b)

? ? ? ? results := re.FindAllStringIndex(b, -1)

? ? ? ? for _, result := range results {

? ? ? ? ? ? fmt.Println(bytesRead + result[0])

? ? ? ? }

? ? ? ? // account for UNIX EOL marker

? ? ? ? bytesRead += len(b) + 1

? ? }


? ? if err := scanner.Err(); err != nil {

? ? ? ? log.Fatal(err)

? ? }

}

輸出:

12

32


查看完整回答
反對 回復(fù) 2023-06-26
  • 1 回答
  • 0 關(guān)注
  • 179 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號