Golang : How to remove certain lines from a file
Alright, here is a simple tutorial on how to remove certain lines of data from a file. There are times due to some unforeseen reasons, some files that got downloaded contain more data that what was needed, such as extra HTTP request header information at the beginning of it.
So, how does one go around deleting those unwanted information?
The solution to this problem is similar to copying a file to a new file except that the unwanted data are omitted out during the copying process. For the code example below, we are going to remove the unwanted data at the beginning of the file simply be ignoring those lines. Once a marker %startHERE
is detected, then only we start reading the rest of the data.
Here you go!
NOTE: For simplicity sake, we will use corruptFile constant to mimic a file. For your own production use, uncomment those lines to read from an actual file.
package main
import (
"fmt"
//"io/ioutil"
//"os"
"strings"
)
const corruptFile = `HTTP 2.0 OK
Content-Length :123456
%startHERE
some real data bytes
more bytes`
func main() {
// UNCOMMENT these lines to read in from an actual file instead.
//if len(os.Args) <= 1 {
// fmt.Printf("USAGE : %s <target_filename> \n", os.Args[0])
// os.Exit(0)
//}
//fileName := os.Args[1]
//fileBytes, err := ioutil.ReadFile(fileName)
//if err != nil {
// fmt.Println(err)
// os.Exit(1)
//}
//lines := strings.Split(string(fileBytes), "\n")
lines := strings.Split(string(corruptFile), "\n")
startPrint := false
for i, line := range lines {
// only print after %startHERE
if equal := strings.Index(line, "%startHERE"); equal > 0 {
startPrint = true
}
if startPrint {
fmt.Println(i, line)
// instead of printing to the screen, this is where
// you want to start writing to a new file a.k.a copying the file
// how it is done at https://www.socketloop.com/tutorials/golang-simple-file-scaning-and-remove-virus-example
}
}
}
Hope this helps and happy coding!
See also : Golang : Display a text file line by line with line number example
By Adam Ng(黃武俊)
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+7.6k Setting $GOPATH environment variable for Unix/Linux and Windows
+10k Golang : How to check if a website is served via HTTPS
+7k Golang : Check if one string(rune) is permutation of another string(rune)
+19.5k Golang : Count JSON objects and convert to slice/array
+18.4k Golang : Implement getters and setters
+9.5k Golang : Qt get screen resolution and display on center example
+7.3k Golang : How to handle file size larger than available memory panic issue
+21.7k Fix "Failed to start php5-fpm.service: Unit php5-fpm.service is masked."
+6.8k Web : How to see your website from different countries?
+33.7k Golang : Proper way to set function argument default value
+7.1k Golang : Word limiter example
+7.7k Golang : Check from web if Go application is running or not