如何使用linux cat和tac命令

cat和tac命令显示文本文件的内容,但它们的内容远不止这些。再深入一点,学习一些高效的Linux命令行技巧。...

cat和tac命令显示文本文件的内容,但它们的内容远不止这些。再深入一点,学习一些高效的Linux命令行技巧。

这是两个简单的小命令,通常被认为过于简单而没有任何实际用途。但是,一旦您知道了使用它们的不同方法,您就会发现它们完全有能力在处理文件时承担起相应的重担。

cat命令

cat用于检查文本文件的内容,并将部分文件连接在一起形成一个更大的文件。

在拨号调制解调器时代的某个时候,二进制文件常常被分解成几个较小的文件,以便于下载。你没有下载一个大文件,而是把每个小文件都拉回来。如果某个文件未能正确下载,您只需再次检索该文件。

当然,您还需要一种方法将较小文件的集合重新组织回单个工作二进制文件中。这个过程被称为连接。这就是猫的由来,也是它的名字来源。

宽带和光纤连接导致了这种特殊需求的减弱,就像拨号上网发出的刺耳声音一样,那么,如今cat还能做些什么呢?实际上很多。

显示文本文件

要让cat在终端窗口中列出文本文件的内容,请使用以下命令。

确保该文件是文本文件。如果您试图在终端窗口中列出二进制文件的内容,结果将是不可预测的。可能会导致终端会话被锁定或更糟。

cat poem1.txt

如何使用linux cat和tac命令

文件poem1.txt的内容显示在终端窗口中。

如何使用linux cat和tac命令

那只是那首著名诗的一半。剩下的呢?这里还有一个叫做poem2.txt的文件。我们可以用一个命令让cat列出多个文件的内容。我们只需要在命令行中按顺序列出文件。

cat poem1.txt poem2.txt

如何使用linux cat和tac命令

看起来好多了,我们现在有整首诗了。

如何使用linux cat和tac命令

使用具有较少

这首诗全在那儿,但它飞过窗户太快了,读不懂开头的几节。我们可以将cat的输出导入less,然后按自己的速度向下滚动文本。

cat poem1.txt poem2.txt | less

我们现在可以在一个流中的文本中前后移动,即使它保存在两个单独的文本文件中。

如何使用linux cat和tac命令

为文件中的行编号

我们可以对文件中显示的行进行cat编号。为此,我们使用-n(number)选项。

cat -n poem1.txt

如何使用linux cat和tac命令

行在终端窗口中显示时进行编号。

如何使用linux cat和tac命令

不要给空行编号

我们设法让猫编号,但是歌词之间的空格也在数。要使文本行编号但忽略空白行,请使用-b(数字非空白)选项。

cat -b poem1.txt

如何使用linux cat和tac命令

现在文本行被编号,空白行被跳过。

如何使用linux cat和tac命令

不显示多个空行

如果文件中有连续的空行部分,我们可以要求cat忽略除一个空行以外的所有空行。看看这个文件。

如何使用linux cat和tac命令

下一个命令将使cat在每一组空行中只显示一个空行。我们需要实现这一点的选项是-s(挤压空白)选项。

cat -s poem1.txt

如何使用linux cat和tac命令

这不会以任何方式影响文件的内容;它只是更改cat显示文件的方式。

如何使用linux cat和tac命令

显示选项卡

如果您想知道空格是由空格还是制表符引起的,可以使用-T(showtabs)选项来查找。

cat -T poem1.txt

如何使用linux cat和tac命令

选项卡由字符“^I”表示。

如何使用linux cat和tac命令

显示行尾

您可以使用-E(show ends)选项检查尾随空格。

cat -E poem1.txt

如何使用linux cat和tac命令

行尾由“$”字符表示。

如何使用linux cat和tac命令

连接文件

把一首诗保存在两个文件中,每个文件中有一半是没有意义的。让我们把他们连在一起,把整首诗放在一个新的文件里。

cat poem1.txt poem2.txt > jabberwocky.txt

如何使用linux cat和tac命令

让我们使用cat检查新文件:

cat jabberwocky.txt

我们的新文件包含其他两个文件的内容。

如何使用linux cat和tac命令

将文本附加到现有文件

那更好,但事实上,这不是整首诗。最后一节不见了。Jabberwocky的最后一节与第一节相同。

如果我们有一个文件中的第一节,我们可以把它添加到文件的底部jabberwocky.txt文件文件,我们就有完整的诗。

在下一个命令中,我们必须使用>,而不仅仅是>。如果使用单个>将覆盖jabberwocky.txt文件. 我们不想那样做。我们想在它的底部添加文本。

cat first_verse.txt >> jabberwocky.txt

如何使用linux cat和tac命令

让我们检查一下这本书的内容jabberwocky.txt文件文件:

cat jabberwocky.txt

最后,这首诗的所有部分都在一起了。

如何使用linux cat和tac命令

重定向stdin

您可以使用cat将键盘输入重定向到文件中。您键入的所有内容都将重定向到文件中,直到您按Ctrl+D。请注意,我们使用单个>,因为我们要创建该文件(或覆盖它,如果它存在的话)。

cat > my_poem.txt

如何使用linux cat和tac命令

我们一发出命令就可以开始打字了。完成后按Ctrl+D。然后,我们可以通过以下方式检查新文件的内容:

cat my-poem.txt

如何使用linux cat和tac命令

听起来像是一个遥远的涡轮可能是刘易斯卡罗尔在他的坟墓里高速旋转。

战术指挥部

tac与cat类似,但它以相反的顺序列出文件的内容。

让我们看看:

tac my_poem.txt

如何使用linux cat和tac命令

文件以相反的顺序列在终端窗口中。在这种情况下,它对它的文学价值没有影响。

如何使用linux cat和tac命令

将tac与标准输入一起使用

使用没有文件名的tac会导致它对键盘的输入进行操作。按Ctrl+D将停止输入阶段,tac将以相反的顺序列出您键入的内容。

tac

如何使用linux cat和tac命令

当按下Ctrl+D时,输入将反转并列在终端窗口中。

如何使用linux cat和tac命令

对日志文件使用tac

除了低级的客厅把戏,tac还能做什么有用的事吗?是的,可以。许多日志文件将其最新条目附加在文件的底部。使用tac(与直觉相反,还有head),我们可以将最后一个条目弹出到终端窗口中。

我们使用tac反向列出syslog文件,并将其导入head。通过告诉head只打印它接收到的第一行(由于tac是文件中的最后一行),我们可以看到syslog文件中的最新条目。

tac /var/log/syslog | head -1

如何使用linux cat和tac命令

head打印syslog文件中的最新条目,然后退出。

注意,头部只打印一行,因为我们的要求,但行是如此之长,它绕了两圈。这就是为什么它看起来像终端窗口中的三行输出。

如何使用linux cat和tac命令

对文本记录使用tac

tac的最后一个招数是一个美人。

通常,tac对文本文件的操作方式是从下到上逐行遍历它们。行是以换行符结尾的字符序列。但我们可以告诉tac使用其他分隔符。这允许我们将文本文件中的“块”数据视为数据记录。

假设我们有一个需要检查或分析的程序日志文件。让我们看一下它的格式。

less logfile.dat

如何使用linux cat和tac命令

如我们所见,文件有一个重复的格式。有三行十六进制值的序列。每组三行十六进制都有一个标签行,以“=SEQ”开头,后跟一个数字序列。

如何使用linux cat和tac命令

如果我们滚动到文件的底部,我们可以看到有很多这样的记录。最后一个号码是865。

如何使用linux cat和tac命令

让我们假设,无论出于什么原因,我们都需要以相反的顺序处理这个文件,一个数据记录一个数据记录。必须保留每个数据记录中三个十六进制行的行顺序。

我们要注意的是,文件中的最后三行以十六进制值93、E7和B8开始,按顺序排列。

让我们用tac反转文件。这是一个很长的文件,所以我们将用管道把它压缩成更少的文件。

tac logfile.dat | less

如何使用linux cat和tac命令

这会反转文件,但不是我们想要的结果。我们希望反转文件,但每个数据记录中的行必须按其原始顺序。

如何使用linux cat和tac命令

我们之前记录过,文件中的最后三行以十六进制值93、E7和B8开始,按顺序排列。这些行的顺序颠倒了。另外,“=SEQ”行现在位于每组三个十六进制行的下方。

塔克去营救。

tac -b -r -s ^=SEQ.+[0-9]+*$ logfile.dat | less

如何使用linux cat和tac命令

我们把它分解一下。

-s(分隔符)选项通知tac我们要在记录之间使用什么作为分隔符。它告诉tac不要使用通常的换行符,而是使用分隔符。

r(regex)选项告诉tac将分隔符字符串视为正则表达式。

-b(before)选项使tac将分隔符列在每条记录之前而不是之后(这是默认分隔符换行符的通常位置)。

-s(分隔符)字符串^=SEQ.+[0-9]+*$被破译如下:

^字符表示行的开始。后跟=序号+[0-9]+*$。这指示tac在行首查找“=SEQ.”的每一次出现,后跟任意数字序列(由[0-9]表示),后跟任意其他字符集(由*$表示)。

像往常一样,我们把所有的东西都用管道输送到更少的地方。

如何使用linux cat和tac命令

我们的文件现在以相反的顺序显示,每个“=SEQ”标签行列在它的三行十六进制数据之前。三行十六进制值在每个数据记录中按其原始顺序排列。

我们可以简单地检查一下。十六进制的前三行的第一个值(即文件反转前的最后三行)与我们之前记录的值相匹配:93、E7和B8。

这是一个相当的技巧为终端窗口一行。

一切都有目的

在Linux世界中,即使是看似最简单的命令和实用程序也可能具有令人惊讶和强大的属性。

简单实用程序的设计理念可以很好地完成一件事,并且可以很容易地与其他实用程序交互,这就产生了一些奇怪的小命令,比如tac。乍一看,似乎有点怪。但是,当你窥视表面之下,有一种意想不到的力量,你可以利用你的优势。

或者,正如另一种哲学所说,“不要因为蛇没有角而轻视它,因为谁能说它不会变成龙呢?”?”

  • 发表于 2021-04-03 11:26
  • 阅读 ( 203 )
  • 分类:互联网

你可能感兴趣的文章

如何将命令行输出保存到windows、mac和linux上的文件

... 今天我们将介绍如何在Windows、Mac和Linux上将命令的输出发送到bashshell中的文本文件。 ...

  • 发布于 2021-03-12 15:56
  • 阅读 ( 632 )

raspberry pi终端命令:raspberry pi用户快速指南

... 我们不希望您在不知道命令行如何工作的情况下就开始使用它。本质上,它是一种指示计算机执行任务的方法,但没有鼠标。 ...

  • 发布于 2021-03-18 12:27
  • 阅读 ( 520 )

10种检查运行哪个linux版本的方法

... 如何检查linux发行版和内核版本 ...

  • 发布于 2021-03-19 19:21
  • 阅读 ( 216 )

如何在linux上使用groupadd管理用户组

... 相关:如何在Linux中更改密码 ...

  • 发布于 2021-03-26 17:15
  • 阅读 ( 185 )

启动linux的9个基本命令

... 如何在linux下打开终端 ...

  • 发布于 2021-03-26 18:33
  • 阅读 ( 228 )

如何在linux中创建新文件

Linux中有几种不同的应用程序和命令可以为您创建新文件,即使不启动应用程序。使用哪种方法取决于文件的用途。让我们看看这些选项,这样您就可以知道哪一个对您最有用。 ...

  • 发布于 2021-03-28 22:06
  • 阅读 ( 245 )

如何检查linux内核和操作系统版本

...版本可以让您对安全更新做出重要决定。我们将向您展示如何找到这些,无论您使用哪个发行版。 滚动和点释放 你知道你在运行哪个版本的Linux吗?你能找到内核版本吗?Linux的滚动发行版,如Arch、Manjaro和openSUSE,经常使用自...

  • 发布于 2021-04-01 13:11
  • 阅读 ( 192 )

如何使用chsh在linux上更改默认shell

Bash不是唯一的Linux shell。很容易尝试其他的shell,比如非常流行的Zsh。找到一个您喜欢的shell后,使用chsh命令将其设置为默认shell。我们会教你怎么做。 为什么贝壳很重要 shell位于您和操作系统之间。它在终端窗口内提供环境...

  • 发布于 2021-04-02 06:04
  • 阅读 ( 338 )

如何在linux上使用sed命令

...命令行使用它来操作文件和流中的文本。我们将向你展示如何利用它的力量。 sed的力量 sed命令有点像国际象棋:学习基础知识需要一个小时,掌握它们需要一辈子(或者,至少需要大量的练习)。我们将向您展示sed功能的每...

  • 发布于 2021-04-02 08:03
  • 阅读 ( 155 )

如何在linux上使用echo命令

...以创建文本文件和日志文件。按照这个简单的指南来了解如何。 回声重复你让它重复的东西 宙斯喜欢离开奥林匹斯山,与美丽的仙女交往。在一次旅行中,他告诉一个叫埃科的山里仙女,如果他的妻子赫拉跟着他,他就要拦...

  • 发布于 2021-04-03 00:31
  • 阅读 ( 181 )
qjjg80772
qjjg80772

0 篇文章

相关推荐