Go语言删除文本文件中的指定行操作代码

 更新时间:2023年12月20日 10:50:29   作者:畱䶒  
假设现在有一个文本文件,我们需要删除文件中乱码的行。我们可以使用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语言删除指定行内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 用go gin server来做文件上传服务

    用go gin server来做文件上传服务

    今天小编就为大家分享一篇关于用go gin server来做文件上传服务,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • Go语言Http Server框架实现一个简单的httpServer

    Go语言Http Server框架实现一个简单的httpServer

    这篇文章主要为大家介绍了Go语言Http Server框架实现一个简单的httpServer抽象,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Go语言结构体定义和使用方法

    Go语言结构体定义和使用方法

    这篇文章主要介绍了Go语言结构体定义和使用方法,以实例形式分析了Go语言中结构体的定义和使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • Go变量作用域代码实战详解

    Go变量作用域代码实战详解

    Go语言提供了几种不同的作用域类型,使得开发者可以灵活地控制变量的可见范围和生命周期,本章节将详细概述Go语言中变量的各种作用域,帮助读者更好地理解和应用这些概念,需要的朋友可以参考下
    2024-06-06
  • go语言读取json并下载高清妹子图片

    go语言读取json并下载高清妹子图片

    前面我们介绍了使用python下载高清妹子图,作为程序猿,我们当然不能只会一种语言,今天我们就来使用go语言来读取API来下载妹子图吧,有需要的宅男们可以参考下。
    2015-03-03
  • Go语言对字符串进行SHA1哈希运算的方法

    Go语言对字符串进行SHA1哈希运算的方法

    这篇文章主要介绍了Go语言对字符串进行SHA1哈希运算的方法,实例分析了Go语言针对字符串操作的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • Golang信号处理及如何实现进程的优雅退出详解

    Golang信号处理及如何实现进程的优雅退出详解

    这篇文章主要给大家介绍了关于Golang信号处理及如何实现进程的优雅退出的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • golang中结构体嵌套接口的实现

    golang中结构体嵌套接口的实现

    本文主要介绍了golang中结构体嵌套接口的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 使用golang脚本基于kubeadm创建新的token(问题分析)

    使用golang脚本基于kubeadm创建新的token(问题分析)

    这篇文章主要介绍了使用golang脚本基于kubeadm创建新的token(问题分析),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-10-10
  • Golang创建第一个web项目(Gin+Gorm)

    Golang创建第一个web项目(Gin+Gorm)

    本文主要介绍了Golang创建第一个web项目(Gin+Gorm),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06

最新评论