Go语言删除文本文件中的指定行操作代码
作者:畱䶒
假设现在有一个文本文件,我们需要删除文件中乱码的行。我们可以使用go的os库来处理文件,遍历整个文件然后将除过乱码的行写入一个新文件,以此来实现我们的需求,这篇文章主要介绍了Go语言删除文本文件中的指定行,需要的朋友可以参考下
1. 思路
假设现在有一个文本文件,我们需要删除文件中乱码的行。我们可以使用go的os库来处理文件,遍历整个文件然后将除过乱码的行写入一个新文件,以此来实现我们的需求。
2. 处理文件
假设我们现在有一个配置文件hello.conf,用户经常修改导致文件错乱或出现乱码情况,我们需要去除乱码行以保证配置文件可用。
如下一个示例文件,注释使用#加文本,配置信息使用等号分隔,我们需要去除掉文件中的空行、乱码行、不包含=和#的行和包含#号却不在开头的行。
#系统版本 version=v1.0.0 #系统平台 platform=arm #数据库信息 database=127.0.0.1;3306;123456;mysql @1234 #https端口 httpsport=8443 8443#dd #用于开启https的设置 enablehttps=false #插入数据库是否携带服务名称 is.add.name=false #设备型号 model=RTD-1
首先以可读写的方式打开文件,并使用换行符来遍历文件。通过特定条件筛选出可用行,并将其写入新文件中,最后修改新创建的文件,完成处理。
package import ( "bufio" "io" "log" "os" "strings" ) const ( FILE = "hello.conf" NEWFILE = "hellonew.conf" ) func main() { deleteBadLine() } func deleteBadLine() { //以可读写方式打开文件 file, err := os.OpenFile(FILE, os.O_RDWR, 0666) if err != nil { log.Fatal(err) } defer file.Close() //创建一个文件并以可读写方式打开 destFile, err := os.OpenFile(NEWFILE, os.O_CREATE | os.O_RDWR, 0666) if err != nil { log.Fatal(err) } defer destFile.Close() //将文件内容写入缓冲区中 reader := bufio.NewReader(file) for { //以换行符来遍历文件 line, err := reader.ReadString('\n') if err != nil { log.Fatal(err) } //读到文件结尾 if err == io.EOF { break } //根据特定条件筛选行 if len(line) == 0 || line == "\r\n" || !strings.Contains(line, "=") && !strings.Contains(line, "#") || strings.Contains(line, "#") && !strings.HasPrefix(line, "#") { log.Println("Bad line:", line) continue } else { log.Println("Normal line:", line) //将可用的行写入新文件 if _, err = destFile.WriteString(line); err != nil { log.Fatal(err) } } } //处理完毕,将新创建的文件重命名 //linux系统可以通过重命名来覆盖静态文件,若其他系统,则需要先进行删除或备份,再重命名 os.Rename(NEWFILE, FILE) }
3. 处理后的文本文件
#系统版本 version=v1.0.0 #系统平台 platform=arm #数据库信息 database=127.0.0.1;3306;123456;mysql #https端口 httpsport=8443 #用于开启https的设置 enablehttps=false #插入数据库是否携带服务名称 is.add.name=false #设备型号 model=RTD-1
到此这篇关于Go语言删除文本文件中的指定行的文章就介绍到这了,更多相关Go语言删除指定行内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!