在 Linux / UNIX 中管理文件的 Cat 命令示例

举报
Tiamo_T 发表于 2022/08/03 08:41:53 2022/08/03
【摘要】 本文给出了 cat 命令的 10 个实际使用示例。这些例子中可能很少有你不熟悉的。或者,如果您已经知道这些示例,它可以让你重新复习。

Cat 命令是您在 Unix / Linux 世界开始时学到的基本命令之一。

您已经知道 cat 显示文件内容。这个命令还能做什么?

本文给出了 cat 命令的 10 个实际使用示例。这些例子中可能很少有你不熟悉的。或者,如果您已经知道这些示例,它可以让你重新复习。

1.显示文件内容

当您将文件名作为参数传递给 cat 时,它会显示文件的内容,如下所示。

$ cat program.pl
#!/usr/bin/perl

if( 2 ge 3) {
print "greater\n";
}else {
print "lesser\n";
}

您还可以显示多个文件的内容,如下所示。

$ cat program.pl program2.pl
#!/usr/bin/perl

if( 2 ge 3) {
print "greater\n";
}else {
print "lesser\n";
}
#!/usr/bin/perl

@arr = qw(1 2 3);
$ref = \@arr;
print ref $ref;

2.创建一个新文件

使用 cat 命令,从标准输入接收的行可以使用重定向符号重定向到新文件。

当您只键入不带任何参数的 cat 命令时,它只会接收标准输入内容并将其显示在标准输出中。因此,在键入该行一次后,当您按下回车键时,同一行将打印在下一行中,如下所示。


$ cat
cat command for file oriented operations.
cat command for file oriented operations.
cp command for copy files or directories.
cp command for copy files or directories.

您还可以将标准输出重定向到新文件,如下所示。

$ cat >cmd_usage.txt
cat command for file oriented operations.
cp command for copy files or directories.

$ cat cmd_usage.txt
cat command for file oriented operations.
cp command for copy files or directories.

有时您可能需要将内容附加到文件中,请使用 >> 重定向符号,如下所示。

$ cat >>cmd_usage.txt
ls command to list out file and directory with its attributes.

$ cat cmd_usage.txt
cat command for file oriented operations.
cp command for copy files or directories.
ls command to list out file and directory with its attributes.

3.复制文件内容

unix 中的重定向符号在处理标准文件描述符内容中起着重要作用。使用它,您可以将一个文件的内容复制到另一个文件中,如下所示。

$ cat program.pl >backup_prgm.pl

如上所示,由于我们使用了输出重定向,标准输出中显示的内容被定向到一个名为 backup_pgrm.pl 的新文件中。查看backup_pgrm.pl的内容:

$ cat backup_pgrm.pl
#!/usr/bin/perl

if( 2 ge 3) {
print "greater\n";
}else {
print "lesser\n";
}

4. 连接多个文件的内容

通过 cat 命令,您将能够将多个文件的内容连接到一个新文件中。

例如,program.pl 和 program2.pl 中的代码组合成一个新文件 all_pgrm.pl。

$ cat program.pl program2.pl >all_pgrm.pl

如上所示,stdout 被重定向,并且新文件已使用 program.pl 和 program2.pl 的内容创建。验证 all_pgrm.pl 的内容:

$ cat all_pgrm.pl
#!/usr/bin/perl

if( 2 ge 3) {
print "greater\n";
}else {
print "lesser\n";
}
#!/usr/bin/perl

@arr = qw(1 2 3);
$ref = \@arr;
print ref $ref;

5.显示行号

要显示每行前面带有行号的文件的内容,请使用选项 -n。以下示例打印来自 program.pl 的行的行号,

$ cat -n program.pl
1 #!/usr/bin/perl
2
3 
4 if( 2 ge 3) {
5 print "greater\n";
6 } else {
7 print "lesser\n";
8 }
9
10

正如您在上面注意到的,即使是空行也有编号。如果仅对非空行进行编号,请使用选项 -b,如下所示,

$ cat -b program.pl
1 #!/usr/bin/perl

2     
3 if( 2 ge 3) {
4 print "greater\n";
5 } else {
6 print "lesser\n";
7 }

请注意,包含空格的行不被视为空行,同样适用于编号为 2 的行。

6. 将文件内容与来自标准输入的输入连接起来

可以从标准输入读取行以及连接其他文件。因此,用户可以在需要时键入他自己的内容。

在以下示例中,您可以在将文件组合在一起时在开头插入几行(来自标准输入)。

$ cat - program.pl program2.pl >all_pgrm.pl
Contents from file : program.pl, program2.pl

如上所示,- 是您可以从标准输入读取的位置,因此标准输入的 1 行已插入到名为 all_pgrm.pl 的新文件的开头,后者的内容来自 program.pl 和 program2.pl 文件:

$ cat -n all_pgrm.pl
1 Contents from file : program.pl, program2.pl
2 #!/usr/bin/perl
3
4
5 if( 2 ge 3) {
6 print "greater\n";
7 } else {
8 print "lesser\n";
9 }
10
11
12 #!/usr/bin/perl
13
14 @arr = qw(1 2 3);
15 $ref = \@arr;
16 print ref $ref;

7. 不要显示重复的空输出行

有时该文件会包含重复的空行,您不想在列出它时在标准输出中显示这些空行。cat 命令提供了一个名为 -s 的选项,它将连续的空输出行压缩为一个并显示。

正如在用法 5 的第一个示例中所注意到的那样(即:在每行前面显示行号),文件 program.pl 中有两个连续的空输出行,编号为 9 和 10。可能是您不想显示那些重复的空输出行。这可以被抑制,如下所示:

# cat -sn program.pl
1 #!/usr/bin/perl
2
3 
4 if( 2 ge 3) {
5 print "greater\n";
6 } else {
7 print "lesser\n";
8 }
9

在上述输出中,第 9 行和第 10 行分别被压缩为一个空行(即:第 9 行)。

8.显示行尾和TAB字符

您可以让 cat 在每一行的末尾显示 $ 字符。通常通过列出文件内容,用户无法通过使用 cat -e 选项识别每行末尾的空格。

例如,对文件 program.pl 使用 -e 选项。如下所示,该文件的第三行(即:program.pl)实际上不是空行,并且第 7 行也分别以空格结尾。

$ cat -ne program.pl
1 #!/usr/bin/perl$
2 $
3     $
4 if( 2 ge 3) {$
5 print "greater\n";$
6 } else {$
7 print "lesser\n";      $
8 }$
9 $
10 $

使用选项 -T 显示制表符。它为 TAB 字符显示 ^I。如下所示,第 5 行和第 7 行以 TAB 字符开头。

$ cat -neT program.pl
1 #!/usr/bin/perl$
2 $
3     $
4 if( 2 ge 3) {$
5 ^Iprint "greater\n";$
6 } else {$
7 ^Iprint "lesser\n";      $
8 }$
9 $
10 $

9. 阅读内容直到特定模式

这里的文档可以与 cat 命令一起使用。例如,当您从标准输入读取时,您可以一直读取到包含特定模式的行。在下面的示例中,从标准输入(直到 EOF)读取行块并打印在标准输出上。

$ cat <<EOF
> mv command to move files and directories
> top command to display linux tasks
> EOF
mv command to move files and directories
top command to display linux tasks

10. 反向显示文件内容

这个例子是骗子。这真的不是 cat 命令示例,但它是相关的。

tac 是 cat 的反义词。可以想象,tac 只会以相反的顺序显示文件的内容(首先显示底部的行)。如果您只想反转行中的字符,则应使用rev 命令

例如,文件 program.pl 被反向显示为:

$ tac program.pl 

}
	print "lesser\n";           
} else {
	print "greater\n";
if( 2 ge 3) {

#!/usr/bin/perl
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。