slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
在 Linux 中巧用 cat 命令
17611538698
webmaster@21cto.com

在 Linux 中巧用 cat 命令

运维 0 2028 2023-07-07 11:23:37
导读:本文帮助大家学习cat命令,不管是老手还是新手都是有用。

在Linux中,cat并不一只猫,而是一个命令,它用于打印文本文件的文件内容。

图片

至少,大多数 Linux 用户都是这么做的,而且没有什么问题。

其实Cat 实际上代表“连接”,是为了合并文本文件而创建的。但只要有一个参数,它就会打印文件内容。

因此,它是用户在终端中读取文件而无需任何其他选项。

使用cat命令


我们要使用 cat 命令,须遵循如下给定的命令语法:

cat [options] Filename(s)

说明这里

  • [options]用于修改 cat 命令的默认行为,例如使用选项-n获取每行的数字。

  • Filename 表示要使用的文件名称


了简单起见,我将使用本指南中命名的文本文件Haruki.txt,其中包含以下文本内容,每一段分一行。如下:

Hear the Wind Sing (1979)Pinball, 1973 (1980)A Wild Sheep Chase (1982)Hard-Boiled Wonderland and the End of the World (1985)Norwegian Wood (1987)Dance Dance Dance (1990)South of the Border, West of the Sun (1992)The Wind-Up Bird Chronicle (1994)Sputnik Sweetheart (1999)Kafka on the Shore (2002)After Dark (2004)1Q84 (2009-2010)Colorless Tsukuru Tazaki and His Years of Pilgrimage (2013)Men Without Women (2014)Killing Commendatore (2017)

那么,在没有任何选项的情况下使用时,输出会是什么?我们看一下:

cat Haruki.txt
图片


正如你所看到的,它打印了整个文本文件!但你可以做的远不止这些。接下来向大家展示一些更实际的例子。

1.创建新文件


大多数 Linux 用户使用 touch 命令来创建新文件,但使用 cat 命令也可以完成相同的操作。

而且在这种情况下,cat 命令比 touch 命令有一个优势,因为您可以在创建文件时向文件添加文本。听起来是不是很酷?

我们使用 cat 命令,将文件名附加到>号之后,如下所示:

cat > Filename

例如,在这里我创建了一个名为NewFile.txt:

cat > NewFile.txt

一旦你这样做了,就会有一个闪烁的光标让你写一些东西,写入完毕后,你可以用Ctrl + d保存更改。

如果只想创建一个空文件,直接按Ctrl + d 就可以进行无任何内容的文件保存。

就是这样!现在可以使用 ls 命令显示当前工作目录的内容

图片


2. 将文件内容复制到另一个文


考虑一个场景,你想要将FileA的文件内容复制到FileB中去。当然,我们可以复制和粘贴,但是如果文件有数百或数千行怎么办?


很简单。你可以使用 cat 命令来重定向数据流。遵循以下给定的命令语法:


cat FileA > FileB

使用上述语法重定向文件内容,它将清除 FileB 文件的原有内容,然后将 FileA 的文件内容复制过来。

例如,我使用两个文本文件 FileA 和 FileB,其中包含以下内容:

图片


现在,如果我使用从 FileA 到 FileB 的重定向,它将删除 FileB 的数据,然后重定向 FileA 的数据:

cat FileA > FileB
图片


同样道理,你可以对多个文件同时执行操作:

cat FileA FileB > FileC
图片

可以看到,上面的命令删除了FileC的数据,然后导入了FileA和FileB的文件数据。

将一个文件的内容追加到另一个文件


有时我们想要将数据追加到现有数据中怎么办。在这种情况下,须使用双大于号 >>符号,而不再是单大于号 >:

cat FileA >> FileB

例如,我将重定向两个文件FileA和FileB的内容全部追加到FileC中:

cat FileA.txt FileB.txt >> FileC.txt
图片


正如大家所看到的,它保留了FileC.txt的原有数据,并将新数据附加在其末尾。

这样我们就可以使用>>向现有文件添加新内容/新行。使用cat >> filename 始添加所需的文本,最后使用Ctrl+D保存文件,搞定

4. 显示行数/行号


你可能会遇到这样的情况,在编辑文件时,特别是写代码是想查看行数,可以使用-n选项来实现:

cat -n File

在这里,我使用了-n选项显示 Haruki.txt 的内容:

图片


5.删除空行


在文本文档中有不少空白行?莫要着急,cat 命令将为你修复它!所要做的就是使用该-s参数。


但使用该参数有一个缺点-s,仍然要有一行空白:

图片


正如大家所看到的,它是有效的,结果也基本接近预期。

那么如何删除所有空行呢?可以通过管道方式将其传递给 grep 命令:

cat File | grep -v '^$'


在这里,-v标志将按照这指定的模式过滤掉结果,'^$'是匹配空行的正则表达式。

以下是我使用实际文件时的结果:

cat Haruki.txt | grep -v '^$'


图片


一旦获得完整的输出,便可以将其重定向到文件以便保存:

cat Haruki.txt | grep -v '^$' > File

图片


以上就是到目前为止,我们一起所学到的全部内容。


接下来是我在本教程中解释的内容的摘要表格:

命令描述
cat 将文件内容打印到终端
cat >File创建一个新文件
cat FileA > FileB的文件内容FileB将被FileA替换
cat FileA >> FileB将FileA的内容追加在FileB内容之后
cat -n File显示文件行数,但同时省略文件的内容显示 。
cat File | more将 cat 命令通过管道连接到 more 命令以处理大文件
cat File | less将 cat 命令通过管道传输到 less 命令,这与上面类似,但它允许双向滚动。
cat File | grep -v '^$'从文件中删除所有空行



如果你学到了新东西,用不同的参数和文件来实践执行,是最好的记忆方式。

以下给大家留个作业题。

  1. 如何使用 cat 命令创建一个空文件?

  2. 将 cat 命令生成的输出重定向到新文件IF.txt

  3. 可以将三个或更多文件输入重定向到一个文件吗?如果是,那么如何做?


是时候锻炼身体了!


编译:老王

参考:https://itsfoss.com/cat-command/

评论