欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語(yǔ)言刪除文本文件中的指定行操作代碼

 更新時(shí)間:2023年12月20日 10:50:29   作者:畱?  
假設(shè)現(xiàn)在有一個(gè)文本文件,我們需要?jiǎng)h除文件中亂碼的行。我們可以使用go的os庫(kù)來(lái)處理文件,遍歷整個(gè)文件然后將除過(guò)亂碼的行寫(xiě)入一個(gè)新文件,以此來(lái)實(shí)現(xiàn)我們的需求,這篇文章主要介紹了Go語(yǔ)言刪除文本文件中的指定行,需要的朋友可以參考下

1. 思路

假設(shè)現(xiàn)在有一個(gè)文本文件,我們需要?jiǎng)h除文件中亂碼的行。我們可以使用go的os庫(kù)來(lái)處理文件,遍歷整個(gè)文件然后將除過(guò)亂碼的行寫(xiě)入一個(gè)新文件,以此來(lái)實(shí)現(xiàn)我們的需求。

2. 處理文件

假設(shè)我們現(xiàn)在有一個(gè)配置文件hello.conf,用戶經(jīng)常修改導(dǎo)致文件錯(cuò)亂或出現(xiàn)亂碼情況,我們需要去除亂碼行以保證配置文件可用。
如下一個(gè)示例文件,注釋使用#加文本,配置信息使用等號(hào)分隔,我們需要去除掉文件中的空行、亂碼行、不包含=和#的行和包含#號(hào)卻不在開(kāi)頭的行。

#系統(tǒng)版本
version=v1.0.0
#系統(tǒng)平臺(tái)
platform=arm
#數(shù)據(jù)庫(kù)信息
database=127.0.0.1;3306;123456;mysql
@1234
#https端口
httpsport=8443
8443#dd
#用于開(kāi)啟https的設(shè)置
enablehttps=false
#插入數(shù)據(jù)庫(kù)是否攜帶服務(wù)名稱
is.add.name=false
#設(shè)備型號(hào)
model=RTD-1

首先以可讀寫(xiě)的方式打開(kāi)文件,并使用換行符來(lái)遍歷文件。通過(guò)特定條件篩選出可用行,并將其寫(xiě)入新文件中,最后修改新創(chuàng)建的文件,完成處理。

package 
import (
	"bufio"
	"io"
	"log"
	"os"
	"strings"
)
const (
	FILE = "hello.conf"
	NEWFILE = "hellonew.conf"
)
func main() {
	deleteBadLine()
}
func deleteBadLine() {
	//以可讀寫(xiě)方式打開(kāi)文件
	file, err := os.OpenFile(FILE, os.O_RDWR, 0666)
	if err != nil {
		log.Fatal(err)
	}
	defer file.Close()
	//創(chuàng)建一個(gè)文件并以可讀寫(xiě)方式打開(kāi)
	destFile, err := os.OpenFile(NEWFILE, os.O_CREATE | os.O_RDWR, 0666)
	if err != nil {
		log.Fatal(err)
	}
	defer destFile.Close()
	//將文件內(nèi)容寫(xiě)入緩沖區(qū)中
	reader := bufio.NewReader(file)
	for {
		//以換行符來(lái)遍歷文件
		line, err := reader.ReadString('\n')
		if err != nil {
			log.Fatal(err)
		}
		//讀到文件結(jié)尾
		if err == io.EOF {
			break
		}
		//根據(jù)特定條件篩選行
		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)
			//將可用的行寫(xiě)入新文件
			if _, err = destFile.WriteString(line); err != nil {
				log.Fatal(err)
			}
		}
	}
	//處理完畢,將新創(chuàng)建的文件重命名
	//linux系統(tǒng)可以通過(guò)重命名來(lái)覆蓋靜態(tài)文件,若其他系統(tǒng),則需要先進(jìn)行刪除或備份,再重命名
	os.Rename(NEWFILE, FILE)
}

3. 處理后的文本文件

#系統(tǒng)版本
version=v1.0.0
#系統(tǒng)平臺(tái)
platform=arm
#數(shù)據(jù)庫(kù)信息
database=127.0.0.1;3306;123456;mysql
#https端口
httpsport=8443
#用于開(kāi)啟https的設(shè)置
enablehttps=false
#插入數(shù)據(jù)庫(kù)是否攜帶服務(wù)名稱
is.add.name=false
#設(shè)備型號(hào)
model=RTD-1

到此這篇關(guān)于Go語(yǔ)言刪除文本文件中的指定行的文章就介紹到這了,更多相關(guān)Go語(yǔ)言刪除指定行內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 用go gin server來(lái)做文件上傳服務(wù)

    用go gin server來(lái)做文件上傳服務(wù)

    今天小編就為大家分享一篇關(guān)于用go gin server來(lái)做文件上傳服務(wù),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-04-04
  • Go語(yǔ)言Http?Server框架實(shí)現(xiàn)一個(gè)簡(jiǎn)單的httpServer

    Go語(yǔ)言Http?Server框架實(shí)現(xiàn)一個(gè)簡(jiǎn)單的httpServer

    這篇文章主要為大家介紹了Go語(yǔ)言Http?Server框架實(shí)現(xiàn)一個(gè)簡(jiǎn)單的httpServer抽象,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Go語(yǔ)言結(jié)構(gòu)體定義和使用方法

    Go語(yǔ)言結(jié)構(gòu)體定義和使用方法

    這篇文章主要介紹了Go語(yǔ)言結(jié)構(gòu)體定義和使用方法,以實(shí)例形式分析了Go語(yǔ)言中結(jié)構(gòu)體的定義和使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • Go變量作用域代碼實(shí)戰(zhàn)詳解

    Go變量作用域代碼實(shí)戰(zhàn)詳解

    Go語(yǔ)言提供了幾種不同的作用域類(lèi)型,使得開(kāi)發(fā)者可以靈活地控制變量的可見(jiàn)范圍和生命周期,本章節(jié)將詳細(xì)概述Go語(yǔ)言中變量的各種作用域,幫助讀者更好地理解和應(yīng)用這些概念,需要的朋友可以參考下
    2024-06-06
  • go語(yǔ)言讀取json并下載高清妹子圖片

    go語(yǔ)言讀取json并下載高清妹子圖片

    前面我們介紹了使用python下載高清妹子圖,作為程序猿,我們當(dāng)然不能只會(huì)一種語(yǔ)言,今天我們就來(lái)使用go語(yǔ)言來(lái)讀取API來(lái)下載妹子圖吧,有需要的宅男們可以參考下。
    2015-03-03
  • Go語(yǔ)言對(duì)字符串進(jìn)行SHA1哈希運(yùn)算的方法

    Go語(yǔ)言對(duì)字符串進(jìn)行SHA1哈希運(yùn)算的方法

    這篇文章主要介紹了Go語(yǔ)言對(duì)字符串進(jìn)行SHA1哈希運(yùn)算的方法,實(shí)例分析了Go語(yǔ)言針對(duì)字符串操作的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • Golang信號(hào)處理及如何實(shí)現(xiàn)進(jìn)程的優(yōu)雅退出詳解

    Golang信號(hào)處理及如何實(shí)現(xiàn)進(jìn)程的優(yōu)雅退出詳解

    這篇文章主要給大家介紹了關(guān)于Golang信號(hào)處理及如何實(shí)現(xiàn)進(jìn)程的優(yōu)雅退出的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • golang中結(jié)構(gòu)體嵌套接口的實(shí)現(xiàn)

    golang中結(jié)構(gòu)體嵌套接口的實(shí)現(xiàn)

    本文主要介紹了golang中結(jié)構(gòu)體嵌套接口的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 使用golang腳本基于kubeadm創(chuàng)建新的token(問(wèn)題分析)

    使用golang腳本基于kubeadm創(chuàng)建新的token(問(wèn)題分析)

    這篇文章主要介紹了使用golang腳本基于kubeadm創(chuàng)建新的token(問(wèn)題分析),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-10-10
  • Golang創(chuàng)建第一個(gè)web項(xiàng)目(Gin+Gorm)

    Golang創(chuàng)建第一個(gè)web項(xiàng)目(Gin+Gorm)

    本文主要介紹了Golang創(chuàng)建第一個(gè)web項(xiàng)目(Gin+Gorm),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06

最新評(píng)論