Wc:打印换行符、单词和字节计数
wc 统计每个给定文件中的字节数、字符数、单词数和换行数,如果没有指定文件或指定文件为“-”,则统计标准输入。 单词是由空白字符分隔的非零长度的可打印字符序列。 使用方法如下:
wc [option]… [file]…
对于每个文件,wc 打印一行计数,并且如果文件作为参数给出,则在计数后打印文件名。 默认情况下,如果给出多个文件,wc 会打印包含累积计数和文件名总数的最后一行。 这个“total”行可以通过 –total 选项进行控制,这是 GNU 的扩展功能。 计数按照以下顺序打印:换行数、单词数、字符数、字节数、最大行长度。 每个计数都右对齐打印在一个字段中,字段之间至少有一个空格,以使数字和文件名通常在列中对齐。 计数字段的宽度根据输入的不同而变化,因此您不应依赖特定的字段宽度。 但是,作为 GNU 的扩展功能,如果只打印一个计数,那么它保证不带有前导空格。
默认情况下,wc 打印三个计数:换行符、单词和字节计数。 可以使用选项指定仅打印特定的计数。 选项不会取消先前给出的其他选项,所以
wc --bytes --words
会同时打印字节计数和单词计数。
使用 –max-line-length 选项,wc 打印每个文件的最长行长度,并且如果有多个文件,则打印这些长度中的最大值(而不是总和)。 这里的行长度以屏幕列为单位进行测量,根据当前的区域设置和假设制表位在每个第8列中。
选项
‘-c’
‘–bytes’
仅打印字节计数。
‘-m’
‘–chars’
根据当前区域设置打印字符计数。无效的字符不计入统计。
‘-w’
‘–words’
仅打印单词计数。单词是由空白字符分隔的非零长度的可打印字符序列。
‘-l’
‘–lines’
仅打印换行符计数。请注意,没有尾随换行符的文件将不包括在行数统计中的最后一个部分。
‘-L’
‘–max-line-length’
仅打印最大显示宽度。制表符设置在每个第8列。考虑到宽字符的显示宽度。不可打印字符的宽度为0。
‘–total=when’
控制何时以及如何打印带有累积计数的最后一行。when 可以是以下之一:
auto
- 当未指定 –total 选项时,这是 wc 的默认模式。如果指定了多个文件,则输出总计行。always
- 始终输出总计行,不管处理的文件数量如何。only
- 仅输出总计数。即,不打印单个文件计数,取消任何前导空格,并且不打印“total”本身,以简化后续处理。never
- 从不输出总计行。
‘–files0-from=file’
禁止处理命令行上指定的文件,并改为处理在 file 文件中指定的文件;每个名称以零字节(ASCII NUL)结尾。当文件名列表太长以超出命令行长度限制时,这很有用。在这种情况下,通过 xargs 运行 wc 是不可取的,因为它会将列表分割为多个子列表,并使 wc 对每个子列表而不是整个列表打印总计。使用 GNU find 产生以 ASCII NUL 结尾的文件名列表的一种方法是使用其 -print0 谓词。如果 file 为’-’,则从标准输入读取以 ASCII NUL 结尾的文件名。
例如,要在当前目录层次结构中查找任何 .c 或 .h 文件中最长行的长度,请执行以下操作:
find . -name '*.[ch]' -print0 | wc -L --files0-from=- | tail -n1
退出状态为零表示成功,非零值表示失败。