parent
1fe14dd2e4
commit
9412f1b074
@ -0,0 +1,3 @@ |
|||||||
|
module git.learnjsthehardway.com/learn-code-the-hard-way/go-coreutils/cat |
||||||
|
|
||||||
|
go 1.24.2 |
@ -0,0 +1,43 @@ |
|||||||
|
package main |
||||||
|
|
||||||
|
import ( |
||||||
|
"fmt" |
||||||
|
"flag" |
||||||
|
"os" |
||||||
|
"log" |
||||||
|
"strings" |
||||||
|
) |
||||||
|
|
||||||
|
func Fail(err error, format string, v ...any) { |
||||||
|
err_format := fmt.Sprintf("ERROR: %v; %s", err, format) |
||||||
|
log.Printf(err_format, v...) |
||||||
|
os.Exit(1) |
||||||
|
} |
||||||
|
|
||||||
|
func main() { |
||||||
|
var number bool |
||||||
|
|
||||||
|
flag.BoolVar(&number, "n", false, "Number all nonempty output lines, starting with 1") |
||||||
|
flag.BoolVar(&number, "number", false, "Number all nonempty output lines, starting with 1") |
||||||
|
flag.Parse() |
||||||
|
|
||||||
|
if flag.NArg() < 1 { |
||||||
|
log.Fatal("USAGE: cat [-n/--number] file0 [fileN]") |
||||||
|
os.Exit(1) |
||||||
|
} |
||||||
|
|
||||||
|
filename := flag.Arg(0) |
||||||
|
in_file, err := os.ReadFile(filename) |
||||||
|
|
||||||
|
if err != nil { Fail(err, "cannot open %s:", filename) } |
||||||
|
|
||||||
|
if(number) { |
||||||
|
count := 1 |
||||||
|
for line := range strings.Lines(string(in_file)) { |
||||||
|
fmt.Printf("%0.4d: %s", count, line) |
||||||
|
count++ |
||||||
|
} |
||||||
|
} else { |
||||||
|
fmt.Print(string(in_file)) |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue