QQ叫紫珊 发表于 2018-8-27 12:46:06

shell脚本wc命令详解!!需求输出结果

  wc命令用来打印文件的文本行数、单词数、字节数等(print the number of newlines, words, and bytes in files)。在Windows的Word中有个“字数统计”的工具,可以帮我们把选中范围的字数、字符数统计出来。Linux下的wc命令可以实现这个 功能。使用vi打开文件的时候,底下的信息也会显示行数和字节数。
  常用参数
  格式:wc -l
  打印指定文件的文本行数。(l=小写L)
  以下参数可组合使用。
  参数:-c, --bytes
  打印字节数(print the byte counts)
  参数:-m, --chars
  打印字符数(print the character counts)
  参数:-l, --lines
  打印行数(print the newline counts)
  参数:-L, --max-line-length
  打印最长行的长度(print the length of the longest line)
  参数:-w, --words
  打印单词数(print the word counts)
  使用示例
  示例一
  # wc /etc/passwd
  46   66 2027 /etc/passwd
  行数 单词数 字节数 文件名
  #
  # wc -l /etc/passwd
  46 /etc/passwd
  # wc -cmlwL /etc/passwd
  46   66 2027 2027   74 /etc/passwd
  # wc -cmlLw /etc/passwd
  46   66 2027 2027   74 /etc/passwd
  # wc -wcmlL /etc/passwd
  46   66 2027 2027   74 /etc/passwd
  #
  问题来了:从上面的命令行执行结果来看,wc的输出数据的顺序与的几个参数的顺序好像没有关系?!
  示例二 用wc命令怎么做到只打印统计数字不打印文件名
  使用管道线。这在编写shell脚本时特别有用。
  # wc -l /etc/passwd
  46 /etc/passwd
  # cat /etc/passwd | wc -l
  46
  #
  示例三 中文编码的问题
  执行环境是中文编码的。
  # echo $LANG
  zh_CN.GB18030
  中文编码文件ehr_object.gv,UTF8编码的文件ehr_object_utf8.gv。
  # file ehr_object.gv ehr_object_utf8.gv
  ehr_object.gv:      ISO-8859 text
  ehr_object_utf8.gv: UTF-8 Unicode text
  #
  # wc ehr_object.gv ehr_object_utf8.gv
  11105830 ehr_object.gv
  wc: ehr_object_utf8.gv:4: 无效或不完整的多字节字符或宽字符
  11105866 ehr_object_utf8.gv
  22210 1696 总计
  #
  示例四 中文单词数的计算
  # cat test.txt
  你好Word
  Linux
  # wc test.txt
  32 16 test.txt
  行数 单词数 字节数 文件名
  示例四 打印出的顺序按照要求变化
  wc -lc test.txt |awk '{print $3 " " $2 " " $1}' >> test2.txt

页: [1]
查看完整版本: shell脚本wc命令详解!!需求输出结果