在 Linux 中巧用 cat 命令
导读:本文帮助大家学习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)
那么,在没有任何选项的情况下使用时,输出会是什么?让我们看一下:
正如你所看到的,它打印了整个文本文件!但你可以做的远不止这些。接下来向大家展示一些更实际的例子。
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 <Filename> | 将文件内容打印到终端 |
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/
相关阅读: