返回顶部

收藏

Go语言模仿linux cat命令

更多
package main

import (
  "io"
  "os"
  "fmt"
  "bufio"
  "flag"
)

var numberFlag = flag.Bool("n", false, "number each line")

func cat(r *bufio.Reader) {
  i := 1
  for {
    buf, e := r.ReadBytes('\n')
    if e == io.EOF { 
      break
    }
    if *numberFlag {
      fmt.Fprintf(os.Stdout, "%5d %s", i, buf)
      i++
    } else {
      fmt.Fprintf(os.Stdout, "%s", buf)
    }
  }
  return
}

func main() {
  flag.Parse()
  if flag.NArg() == 0 {
    cat(bufio.NewReader(os.Stdin))
  }
  for i := 0; i < flag.NArg(); i++ {
    f, e := os.Open(flag.Arg(i))
    if e != nil {
      fmt.Fprintf(os.Stderr, "%s: error reading from %s: %s\n", os.Args[0], flag.Arg(i), e.Error())
      continue
    }
    cat(bufio.NewReader(f))
  }
}

标签:cat,linux,golang

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. 博主 发表 2015-03-28 08:37:35 Linux系统Go开发环境搭建
  2. 博主 发表 2016-03-28 12:58:40 Linux系统Go开发环境搭建
  3. admin 发表 2016-03-29 04:56:26 使用 Gogs 搭建自己的 Git 服务器
  4. Lok 发表 2015-01-06 09:09:17 vim支持go语言语法高亮
  5. Lok 发表 2015-01-06 09:09:17 vim支持go语言语法高亮
  6. Lok 发表 2015-01-06 08:41:39 centos5.x/redhat5.x安装GO语言
  7. HH 发表 2018-02-15 16:47:10 DBA蹩脚编程能力-0002-Python命令行参数(视频)
  8. yeseng 发表 2018-06-03 08:54:28 码云推荐 |基于 Spring Boot 的秒级定时任务管理
  9. Lok 发表 2015-01-06 08:41:39 centos5.x/redhat5.x安装GO语言
  10. 0711101021 发表 2018-02-15 16:43:21 DBA蹩脚编程能力-0001-文本编辑(视频)
  11. 尖兵 发表 2016-02-22 14:13:32 谈一谈程序员的成长
  12. xirruiqiang 发表 2018-07-31 11:30:21 tar打包如何不打包某一个文件夹(排除某些文件夹)

发表评论