wc 和 nl
100%

文本操作 · 第 15 课

wc 和 nl

学习使用 wc 统计行、单词、字节或字符,并使用 nl 为行编号。

wc 命令统计文本流的属性,而 nl 会写出输入并生成行号。两者都可以读取文件或 stdin,并把结果发送到 stdout。

阅读 wc 的默认输出

不指定计数选项时,wc 会输出换行符数、单词数和字节数;如果提供了文件名,后面还会显示文件名:

$ printf 'red blue\ngreen\n' > colors.txt
$ wc colors.txt
 2  3 15 colors.txt

从左到右分别是:

  1. 2 个换行符,以行数显示。
  2. 3 个由空白分隔的单词。
  3. 这个 ASCII 示例中有 15 个字节。

如果最后一行文本没有结尾换行符,wc -l 不会把它计入,因为该选项统计的是换行符,而不是视觉上看到的行。

wc file.txt 的默认输出中,前三个数字分别表示什么?

请求单项计数

只选择需要的度量:

  • -l:统计换行符。
  • -w:统计单词。
  • -c:统计字节。
  • -m:根据当前 locale 统计字符。

例如:

$ wc -w colors.txt
3 colors.txt

对于 ASCII 文本,字节数和字符数相等;但对于 UTF-8 等多字节编码,两者可能不同。使用 stdin 而没有文件名操作数时,wc 通常不显示文件名标签:

$ printf 'one two\n' | wc -w
2

哪个命令只报告 essay.txt 的单词数?

哪个选项会让 wc 根据当前 locale 统计字符而不是字节?

指定多个文件时,wc 会为每个文件输出一项结果,并增加一行 total。GNU wc -L 报告输入行的最大显示宽度。

使用 nl 为非空行编号

默认情况下,nl 会为输入逻辑正文中的非空行编号。假设 notes.txt 的第二行为空:

alpha

beta

空行会保留,但不会获得编号:

$ nl notes.txt
     1	alpha

     2	beta

nl 会写出带编号的结果;它不会修改 notes.txt

默认情况下,nl notes.txt 如何处理正文中的空行?

为每一行编号

使用 -ba 可选择正文编号样式 a,为所有行编号:

$ nl -ba notes.txt
     1	alpha
     2
     3	beta

其他选项可以控制格式。例如,-w 3 设置编号字段宽度,-s ': ' 更改编号后的分隔符。

哪个命令会为 notes.txt 中的每一正文行编号,包括空行?

课程已完成

你已完成 wc 和 nl

现在,你可以在不编辑源文件的情况下度量文本流并添加可见行号。

  • 理解 wc 默认输出中的行、单词和字节列。

  • 使用 -l-w-c-m 选择单项计数。

  • 区分字节数和字符数。

  • 使用 nl 的默认行为为非空行编号。

  • 使用 nl -ba 同时为空行编号。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
下一节
返回 文本操作