零、背景
cat命令是初学者都知道的命令,但是他还有一些功能也许你还不知道。今天我们将全面的介绍cat命令。
一、介绍
cat命令在linux系统中使用的非常普遍,cat命令能够帮助我们创建、查看、连接(多个文件合成一个)文件等操作。本文主要讲述cat命令的使用方法。
二、使用方法
2.1 语法
cat [OPTION]... [FILE]...
如果cat后面没有跟文件名或者跟的是中划线(-),那么cat将会从标准输入读取数据,输出到标准输出,也就是说读入一行键盘输入,然后在屏幕输出。稍后将会有案例体现。
2.2 选项
-E 每一行结尾显示美元符号($) -v 使用^和M-,除了LFD和TAB-T 显示制表符(TAB)为^I -A 相当于 -vET-e 相当于 -vE-n 显示行号(空行也显示)-b 显示行号,忽略空行。(空行不显示行号)-t 相当于 -vT-s 抑制重复的空行输出,也就是说多个相邻的空行只打印一次--help 显示帮助--version 显示版本
三、案例
数据准备:
假设我们现有一个文件,名称分别是a.txt。内容如下:
cat -n a.txt
3.1 创建文件并写入内容
小知识点:
> 重定向符合,可以将数据写入到文件,如果文件不存在则创建新文件;如果存在则覆盖原内容。>> 重定向符号,可以将数据追加到文件,如果文件不存在则创建新文件;如果存在则在原内容后面追加。
a. 创建b.txt文件,写入内容。
cat > b.txt
內容:
PHPJavaPhtyonScala
注意: 写完文件退出的时候可以按 ctrl + D 或者 ctrl + C 退出写入。 当然也可以使用EOF,这种方法在写脚本的比较常用。
b. 下面将使用EOF结束的方式写入c.txt文件:
cat > c.txt << EOF
温馨提示:最后输入 EOF,来结束写入文件。
c. 拷贝写入文件
下面我们拷贝a.txt 文件内容到a.txt.bak
cat a.txt > a.txt.bakcat < a.txt > a.txt.bak2
经过验证查看: a.txt.bak 和 a.txt.bak2和 a.txt文件内容相同。成功。。。
3.2 查看多个多件,排序以后新写入到新文件
cat 可以同时查看多个文件,格式
cat file1 file2 ...
a. 将a.txt、b.txt、c.txt 内容合并排序以后写入的d.txt文件中
cat a.txt b.txt c.txt | sort > d.txt
还有另外使用sort命令的-o选项也可以保存文件:
cat a.txt b.txt c.txt | sort -o d.txt
b. 将当前目录下所有文件排序、去重空行、以后,将包含Java行写入到java.txt文件中。
开始之前我们将目录下只保留a.txt b.txt c.txt三个文件,其他文件先删除
下面多个命令都能实现:
- 使用find + cat + 实现
find . -type f -exec cat '{}' ; | grep -i java > java.txt
- 使用 find + cat + xargs + grep 实现
find . -type f | xargs cat | grep -i java > java.txt
如果find用法还不熟悉的话,请参考:Linux:你真的了解Find命令吗?看看你还不知道的秘密
Find命令25个实例,你想要的都在这里了
还有很多可以实现,例如sed 、awk等等,因为篇幅有限,这里就不写怎么多了,如果感兴趣可以自己写写。
3.3 查看文件的行号
cat -n a.txt或者cat -b a.txt
观察发现:
1. -n 对空行也显示行号
2. -b 对空行不显示行号
3.4 显示文件末尾的美元符号($)
选项说明:
-E 每一行结尾显示美元符号($)-A 相当于 -vET-e 相当于 -vE
命令
cat -E a.txt或者cat -A a.txt或者cat -e a.txt
观察发现:
a. 三个命令都可以实现显示末尾美元符($)的功能
b. -A 还可以将制表符(TAB)显示成^I (大写i)
3.5 抑制多个个相邻空行输出(多个相邻空行只显示一行)
选项说明:
-s 抑制重复的空行输出,也就是说多个相邻的空行只打印一次
命令:
cat -s a.txt
使用 -s 可以消除(抑制)多个相邻空行的输出,也就是说对个相邻的空行只会输出一个空行。
3.6 将TAB显示为^I
选项:
-T 将制表符()显示成^I-t 相当于 -vT-A 相当于 -vET(既可以输出制表符也可以显示末尾$符号)
命令:
cat -T a.txt cat -t a.txtcat -A a.txt
3.7 显示帮助和版本
选项:
--help 显示帮助--version 显示版本
命令:
cat --versioncat --help