说明
cat命令可以理解为英文单词concatenate的缩写,起功能是连接多个文件并打印到屏幕输出,或者重定向到指定的文件中。该命令常用来显示单个文件的内容,或者将几个文件内容连接起来,还可以从标准输出中读取内容并显示。
常用的几个功能:
1、查看文件。例如:cat filename.txt
2、把多个文件合并成一个。例如:cat file1.txt fil2.txt > newfile.txt
3、非交互式的编辑或追加内容到文件尾部。格式:
cat >> file.txt <<EOF
内容...
EOF
注意:cat后面如果是一个>符号,那么就是覆盖文件内容,如果是>>那就是追加到文件末尾
4、清空文件内容。例如:cat /dev/null > file.txt
格式
cat [option] [filename]
常用参数说明
- -n:从以开始对所有的输出内容按行编号
- -b:跟-n一样,但是会忽略显示空白行行号
- -s:如果有两行及以上的空白行时,合并替换为一行空白行
- -A:等价于-vET三个选项的功能之和
- -e:等价于-vE
- -E:在每一行的行尾显示$符号
- -t:等价于-vT
- -T:将Tab字符显示为^I
- -v:除了LFD和TAB之外,使用^和M-引用
示例
1、将内容追加到文件末尾
[root@localhost ~]# cat > abc.txt <<EOF #这里面加了很多空行,为后面测试做准备(这里我用的是一个>符号)
> hello world
>
> php
>
> python
>
>
>
> go
> java
> EOF
注意:这EOF必须成对出现,可以使用其他字符代替,只要成对出现即可
2、查看文件内容
[root@localhost ~]# cat abc.txt
hello world
php
python
go
java
3、-n参数的使用,所有行都显示了行号
[root@localhost ~]# cat -n abc.txt
1 hello world
2
3 php
4
5 python
6
7
8
9 go
10 java
4、-b参数使用,只显示了非空行的行号
[root@localhost ~]# cat -b abc.txt
1 hello world
2 php
3 python
4 go
5 java
5、-s参数使用,连续两个以上的空行,就会只显示一个空行
[root@localhost ~]# cat -s abc.txt
hello world
php
python
go
java
注意:但是在实际工作中,我们跟喜欢把所有空行过滤掉,那么我们可以使用grep -v “^$” filename来去掉所有空行
[root@localhost ~]# grep -v "^$" abc.txt
hello world
php
python
go
java
6、-E参数使用,每行末尾都显示了$符号,空行也显示了$符号
[root@localhost ~]# cat -E abc.txt
hello world$
$
php$
$
python$
$
$
$
go$
java$
7、注意空行结尾文件,其实也会有一个$占用了空间
[root@localhost ~]# echo > test.txt
[root@localhost ~]# cat -E test.txt
$
[root@localhost ~]# ll test.txt
-rw-r--r--. 1 root root 1 Jun 3 14:05 test.txt
8、清空文件,使用/dev/null清空,那么文件空间就为0
[root@localhost ~]# cat /dev/null > test.txt
[root@localhost ~]# ll test.txt
-rw-r--r--. 1 root root 0 Jun 3 14:06 test.txt
9、连接多个文件
[root@localhost ~]# cat abc.txt abc.txt #这里对同一个文件进行两次连接,不同文件对应指定即可,下面重复出现了abc.txt内容
hello world
php
python
go
java
hello world
php
python
go
java
10、连接文件后重新输出到一个新的文件
[root@localhost ~]# cat abc.txt abc.txt >> test.txt
[root@localhost ~]# cat test.txt
hello world
php
python
go
java
hello world
php
python
go
java
11、