Linux 下如何使用cat命令_java

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


语法


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

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


查看内容


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

[root@ecs-centos-7 ~]# cat b.txt
abcde
fghij
12345
09876
[root@ecs-centos-7 ~]# cat c.txt
这是测试de文件

哈哈哈

  • 同时查看多个文件内容

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


[root@ecs-centos-7 ~]# cat b.txt c.txt
abcde
fghij
12345
09876
这是测试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
abcde
fghij

12345
09876

使用 -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
abcde
fghij



12345
09876
[root@ecs-centos-7 ~]# cat -s b.txt
abcde
fghij

12345
09876

上面的例子中, 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 | more
Jul 19 03:10:01 ecs-centos-7 rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-41.el7_7" x-pid="761" x-info="http://www.rsyslog.
com"
] rsyslogd was HUPed
Jul 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.txt
this 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
123
xxabc
[root@ecs-centos-7 ~]# cat b.txt
abcde
fghij
12345
09876
[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
123
xxabc
abcde
fghij
12345
09876
这是测 de文件
哈哈    大笑

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

https://mp.weixin.qq.com/s/tiTKsKmFnJGfOa2Ly31Gwg