猫
这个 猫 程序有许多有趣的选项。 其中许多用于帮助更好地可视化文本内容。 一个例子是 -A 选项,用于在文本中显示非打印字符。 有时我们想知道控制字符是否嵌入在我们可见的文本中。 其中最常见的是制表符(与空格相对)和回车符,通常在 MS-DOS 样式的文本文件中作为行尾字符出现。 另一种常见情况是包含带有尾随空格的文本行的文件。
让我们使用创建一个测试文件 猫 作为一个原始的文字处理器。 为此,我们只需输入命令 猫 (连同为重定向输出指定一个文件)并输入我们的文本,然后 输入 正确结束该行,然后 Ctrl-d, 表示 猫 我们已经到达文件尾。 在本例中,我们输入一个前导制表符并在该行后面加上一些尾随空格:
[我@linuxbox ~]$ 猫 > foo.txt
敏捷的棕色狐狸跳过了懒惰的狗。 [我@linuxbox ~]$
[我@linuxbox ~]$ 猫 > foo.txt
敏捷的棕色狐狸跳过了懒惰的狗。 [我@linuxbox ~]$
接下来,我们将使用 猫 与 -A 显示文本的选项:
[我@linuxbox ~]$ 猫 -A foo.txt
^I敏捷的棕色狐狸跳过了懒惰的狗。 $ [me@linuxbox ~]$
[我@linuxbox ~]$ 猫 -A foo.txt
^I敏捷的棕色狐狸跳过了懒惰的狗。 $ [me@linuxbox ~]$
正如我们在结果中看到的,我们文本中的制表符由 ^I. 这是一个常见的表示法,意思是“Control-I”,事实证明,它与制表符相同。 我们还看到一个 $ 出现在该行的真正末尾,表明我们的文本包含尾随空格。
MS-DOS 文本对比。 Unix 文本
您可能想要使用的原因之一 猫 在文本中查找非打印字符就是发现隐藏的回车符。 隐藏回车从何而来? DOS 和 Windows! Unix 和 DOS 在文本文件中没有以相同的方式定义行尾。 Unix 以换行符 (ASCII 10) 结束一行,而 MS-DOS 及其衍生产品使用序列回车 (ASCII 13) 和换行符来终止每行文本。
有几种方法可以将文件从 DOS 格式转换为 Unix 格式。 在许多 Linux 系统上,有一些程序叫做 dos2unix 和 UNIX2DOS, 它可以将文本文件与 DOS 格式相互转换。 但是,如果您没有 dos2u-nix 在你的系统上,别担心。 将文本从 DOS 格式转换为 Unix 格式的过程非常简单; 它只涉及删除违规回车。 这可以通过本章稍后讨论的几个程序轻松完成。
cat 还具有用于修改文本的选项。 两个最突出的是 -n,它对行进行编号,和 -s,它抑制多个空行的输出。 我们可以这样证明:
[我@linuxbox ~]$ 猫 > foo.txt
快速的棕色狐狸
[我@linuxbox ~]$ 猫 > foo.txt
快速的棕色狐狸
跳过懒狗。
[我@linuxbox ~]$ 猫 -ns foo.txt
跳过懒狗。
[我@linuxbox ~]$ 猫 -ns foo.txt
1
2
3
1
2
3
[我@linuxbox ~]$
[我@linuxbox ~]$
快速的棕色狐狸
快速的棕色狐狸
跳过懒狗。
跳过懒狗。
在这个例子中,我们创建了一个新版本的 文件.txt 测试文件,其中包含由两个空行分隔的两行文本。 经处理后 猫 与 -ns 选项,多余的空行被删除,剩余的行被编号。 虽然这不是一个对文本执行的过程,但它是一个过程。