go自动给txt的每行行尾增加/32
小记
-
每行IP 11.11.11.11 改成 11.11.11.11/32
// @Author aa11le
package main
import (
"bufio"
"fmt"
"io/ioutil"
"os"
"regexp"
"strings"
"sync"
)
func main() {
// 获取当前工作目录的绝对路径
currentDir, err := os.Getwd()
if err != nil {
fmt.Println("无法获取当前工作目录:", err)
return
}
// 获取当前目录下的所有文件
files, err := ioutil.ReadDir(currentDir)
if err != nil {
fmt.Println("无法列出当前目录中的文件:", err)
return
}
// 定义一个正则表达式以匹配IP地址
ipPattern := `b(?:d{1,3}.){3}d{1,3}b`
ipRegex := regexp.MustCompile(ipPattern)
// 创建等待组,用于等待所有文件处理完成
var wg sync.WaitGroup
// 错误处理函数
handleError := func(msg string, err error) {
fmt.Printf("%s: %vn", msg, err)
}
// 循环处理文件
for _, file := range files {
if !file.IsDir() && strings.HasSuffix(file.Name(), ".txt") {
filename := file.Name()
// 增加等待组计数
wg.Add(1)
go func(filename string) {
defer wg.Done()
// 打开文件
file, err := os.Open(filename)
if err != nil {
handleError("无法打开文件 "+filename, err)
return
}
defer file.Close()
// 创建一个新的输出文件
outputFile, err := os.Create("增加掩码_" + filename)
if err != nil {
handleError("无法创建输出文件", err)
return
}
defer outputFile.Close()
scanner := bufio.NewScanner(file)
writer := bufio.NewWriter(outputFile)
// 逐行读取文件并进行处理
for scanner.Scan() {
line := scanner.Text()
// 使用正则表达式查找IP地址并在末尾添加"/32"
modifiedLine := ipRegex.ReplaceAllString(line, "$0/32")
writer.WriteString(modifiedLine + "n")
}
if err := scanner.Err(); err != nil {
handleError("处理文件 "+filename+" 时发生错误", err)
return
}
// 刷新缓冲区并保存输出文件
writer.Flush()
fmt.Printf("已处理文件 %s,并将结果保存到 增加掩码_%sn", filename, filename)
}(filename)
}
}
// 等待所有文件处理完成
wg.Wait()
}
-
编译成可执行程序
原文始发于微信公众号(echoabced):go自动给txt的每行行尾增加/32
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论