commit 35bdca901916312e892ceb1ed45d4925050d2b99 Author: r0n1n7an Date: Tue May 23 17:25:00 2023 +0800 first commit diff --git a/SortTextLines.exe b/SortTextLines.exe new file mode 100644 index 0000000..3018b99 Binary files /dev/null and b/SortTextLines.exe differ diff --git a/SortTextLines.go b/SortTextLines.go new file mode 100644 index 0000000..531d076 --- /dev/null +++ b/SortTextLines.go @@ -0,0 +1,62 @@ +package main + +import ( + "bufio" + "flag" + "fmt" + "log" + "os" + "sort" + "strings" +) + +var src string = "" +var dst string = "" +var trm bool = false + +func init() { + flag.StringVar(&src, "i", "", "Input File") + flag.StringVar(&dst, "o", "", "Output File") + flag.BoolVar(&trm, "t", false, "Trim all leading and trailing spaces") + flag.Parse() +} + +func main() { + if src == "" || dst == "" { + fmt.Printf("[ERR] Invalid Input/Output, Check Arguments !\r\n") + os.Exit(1) + } + fsi, err := os.Open(src) + if err != nil { + fmt.Printf("[ERR] %v\r\n", err) + os.Exit(1) + } + defer fsi.Close() + + var lines []string + scn := bufio.NewScanner(fsi) + for scn.Scan() { + if trm { + lines = append(lines, strings.TrimSpace(scn.Text())) + } else { + lines = append(lines, scn.Text()) + } + } + sort.Strings(lines) + + fso, err := os.OpenFile(dst, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666) + if err != nil { + fmt.Printf("[ERR] %v\r\n", err) + } + defer fso.Close() + + for _, line := range lines { + _, err = fso.WriteString(line + "\r\n") + if err != nil { + log.Printf("[ERR] %v\r\n", err) + continue + } + } + fso.Sync() + fso.Close() +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..f2bf4fb --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module SortTextLines + +go 1.19