在 Linux 中巧用 cat 命令

2023年 8月 12日 88.8k 0

导读:本文帮助大家学习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 '^$' 从文件中删除所有空行

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

以下给大家留个作业题。

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

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

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

  • 是时候锻炼身体了!

    编译:老王

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

    相关文章

    塑造我成为 CTO 之路的“秘诀”
    “人工智能教母”的公司估值达 10 亿美金
    教授吐槽:985 高校成高级蓝翔!研究生基本废了,只为房子、票子……
    Windows 蓝屏中断提醒开发者:Rust 比 C/C++ 更好
    Claude 3.5 Sonnet 在伽利略幻觉指数中名列前茅
    上海新增 11 款已完成登记生成式 AI 服务

    发布评论