龙空技术网

Linux 下如何使用cat命令

Linux开发那些事儿 100

前言:

当前咱们对“cat 文件名 文件名”大概比较关心,同学们都需要知道一些“cat 文件名 文件名”的相关资讯。那么小编在网摘上搜集了一些关于“cat 文件名 文件名””的相关内容,希望同学们能喜欢,朋友们一起来了解一下吧!

cat ( concatenated 的简写) 命令是最广泛使用的命令之一,它的主要功能是从文件读取数据并输出到终端上,我们可以使用它创建、查看、合并文件

语法

cat [OPTION]... [FILE]...

cat的语法比较简单,下面主要说下具体的用法吧

查看内容

这个是大部分人都会使用, cat 后面接文件名就可以查看文件内容了

[root@ecs-centos-7 ~]# cat b.txt abcdefghij1234509876[root@ecs-centos-7 ~]# cat c.txt 这是测试de文件哈哈哈
同时查看多个文件内容

上面是查看单个文件,需要同时查看多个文件的话,cat 后面接文件名列表(文件名之间用空格隔开)即可,下面是同时查看 b.txt 以及 c.txt 的例子

[root@ecs-centos-7 ~]# cat b.txt c.txtabcdefghij1234509876这是测试de文件哈哈哈
-E | -T 选项

这几个选项使用频率很低,简单介绍下

-E: 输出的时候每一行都以 $ 结尾-T: 输出的时候每一行中的Tab键替换成 ^I 字符

下面是 -E 以及 -T 选项的例子

[root@ecs-centos-7 ~]# cat c.txt 这是测 试de文件哈哈    大笑[root@ecs-centos-7 ~]# cat -E c.txt 这是测 试de文件$哈哈    大笑$[root@ecs-centos-7 ~]# cat -T c.txt 这是测 试de文件哈哈^I大笑[root@ecs-centos-7 ~]# cat -ET c.txt 这是测 试de文件$哈哈^I大笑$
输出行号

上面 b.txt 有4行内容,如何在每一行内容前面显示对应的行号呢,-n 选项可以解决这个问题,请看下面的例子

[root@ecs-centos-7 ~]# cat -n b.txt      1  abcde     2  fghij     3  12345     4  09876
-n 和 -b 选项

-b 选项和 -n 选项很相似,唯一的区别是 -b 选项只对非空白行计数,而 -n 选项是对所有行都计数的

我们把 b.txt 第二行和第三行之间空出一行,然后分别用 -n 和 -b 选项查看文件内容

b.txt 文件内容如下:

[root@ecs-centos-7 ~]# cat b.txt abcdefghij1234509876

使用 -n 查看文件内容

[root@ecs-centos-7 ~]# cat -n b.txt      1  abcde     2  fghij     3     4  12345     5  09876

使用 -b 查看文件内容

[root@ecs-centos-7 ~]# cat -b b.txt      1  abcde     2  fghij     3  12345     4  09876

从上面的例子中可以看出, -n 和 -b 唯一的区别就是在空行的计数上, -n 对空行计数,而 -b 对空行不计数

控制重复的空行输出

有时候一个文件中有多个空行,使用 -s 选项可以只输出一个空行

[root@ecs-centos-7 ~]# cat b.txt abcdefghij1234509876[root@ecs-centos-7 ~]# cat -s b.txt abcdefghij1234509876

上面的例子中, b.txt 第三、四、五行都是空行,使用 -s 选项的输出中只有第三行是空行,忽略掉第四、五行的空行

分页查看内容

有时候一个文件太大了,终端屏幕显示不下,使用 cat 会输出所有内容,后面的内容会把前面的顶掉,这时我们可以结合 more 命令(后面的文章会介绍)进行分页查看文件内容

我们以系统日志文件( /var/log/messages )为例来说明

[root@ecs-centos-7 ~]# ls -lh /var/log/messages-rw------- 1 root root 6.1K Jul 19 15:31 /var/log/messages[root@ecs-centos-7 ~]# [root@ecs-centos-7 ~]# [root@ecs-centos-7 ~]# [root@ecs-centos-7 ~]# cat /var/log/messages | moreJul 19 03:10:01 ecs-centos-7 rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-41.el7_7" x-pid="761" x-info=";] rsyslogd was HUPedJul 19 03:10:01 ecs-centos-7 systemd: Removed slice User Slice of root.Jul 19 04:01:01 ecs-centos-7 systemd: Created slice User Slice of root.Jul 19 04:01:01 ecs-centos-7 systemd: Started Session 2507 of user root.Jul 19 04:01:01 ecs-centos-7 systemd: Removed slice User Slice of root.Jul 19 05:01:01 ecs-centos-7 systemd: Created slice User Slice of root.Jul 19 07:01:01 ecs-centos-7 systemd: Created slice User Slice of root.Jul 19 07:01:01 ecs-centos-7 systemd: Started Session 2510 of user root.Jul 19 07:01:01 ecs-centos-7 systemd: Removed slice User Slice of root.Jul 19 08:01:01 ecs-centos-7 systemd: Created slice User Slice of root.Jul 19 08:01:01 ecs-centos-7 systemd: Started Session 2511 of user root.--More--

上面的例子中,用 cat 查看系统日志并把日志内容通过管道传输到 more 命令那里, more 命令会对内容做分页输出,上面的输出末尾的 --More-- 字样表示查看的文件有多页,使用 空格键进行翻页,Enter 键显示下一行, Q 键退出分页模式

创建文件

使用以下命令可以创建一个新文件

[root@ecs-centos-7 ~]# cat > t.txtthis is a test file^C[root@ecs-centos-7 ~]# cat t.txt this is a test file

注意:

如果 t.txt 不存在,则创建文件并输入文件内容,按 Ctrl + C 结束如果 t.txt 已经存在, 输入的内容会覆盖现有内容如果想往 t.txt 追加内容,请使用 cat >> t.txt

合并文件

使用以下命令可以把多个文件内容合并到一个文件中

[root@ecs-centos-7 ~]# cat a.txt 123xxabc[root@ecs-centos-7 ~]# cat b.txt abcdefghij1234509876[root@ecs-centos-7 ~]# cat c.txt 这是测 试de文件哈哈    大笑[root@ecs-centos-7 ~]# cat a.txt b.txt c.txt > t.txt [root@ecs-centos-7 ~]# cat t.txt 123xxabcabcdefghij1234509876这是测 试de文件哈哈    大笑

上面的例子是把 a.txt 、b.txt 、c.txt 内容按顺序合并到 t.txt 中

标签: #cat 文件名 文件名