Linux 查看文件内容(8)
我们知道在图形界面上查看文件内容只需要双击打开就好,那么在终端窗口里怎么查看文件内容呢?显然是需要能有一个命令能把文件内容显示在终端界面上。
查看文件内容主要有两个命令,分别是 cat 和 more,还有一个 grep命令可以查找文件对应内容。慢慢介绍。
cat
cat 命令可以用来 查看文件内容、创建文件、文件合并、追加文件内容 等功能。本篇主要介绍查看文件内容。
它的特点是会一次显示所有内容,适合查看内容较少 的文本文件。
可以在目录里准备两个文本文件,一个内容多点,一个内容较少点,分别为 demo1.txt 和 demo2.txt。使用 cat命令分别查看:
cat demo1.txt cat demo2.txt
为了看到效果,我把终端窗口调得较小,太大的窗口看不到区别:
可以看到,不管内容多长,cat 命令总是把所有内容都显示出来,当内容超过窗口时会自动到下一屏。你可能会奇怪我为什么要强调这一点,只要能看到内容就好了啊。说这个其实是因为另一个命令 more 跟它有所区别,下面会介绍。
在这之前,我们先看看 cat 的两个选项:
- -b:对非空输出行编号
- -n:对输出的所有行编号
其实就是在每一行输出内容前面加上编号,-b 是只对非空的行加编号,而-n 对所有的行都加编号。
说到这,我又悲剧了,我的Linux环境不管哪个选项都是对所有行编号:
建议大家还是在自己的电脑上装个虚拟机环境试试,比如Ubuntu。
more
more命令的区别在于,当文件超过窗口时,会分屏显示文件,说不如做,分别测试demo1.txt 和 demo2.txt文件:
more demo1.txt more demo2.txt
可以很明显的看到区别,当文件内容较少时,与cat效果没区别,当文件内容较多时,会显示一个提示信息,给出至今己显示的该文件的百分比:--More--(XX%),此时可以根据以下不同操作做出回应:
操作键 | 功能 |
---|---|
空格键 | 显示文本下一屏内容 |
Enter | 一次滚动文本的一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出 |
/word | 搜索word字符串(word可替换) |
可自行尝试。
grep
Linux系统中grep命令是一种强大的文本搜索工具,使用格式:
grep 查找的目标字符 文件名
现在目录下有一 test.txt文件,看下它的内容:
cat test.txt //结果 hello world this is test hello linux this is test asdhsadyuscbjna
在这个文件里搜索 hello:
grep hello test.txt //结果 hello world hello linux
可以看到,搜索结果会把包含所搜字符的整个行都输出来,注意,如果想要搜索多个单词,应该加上引号:
grep 'hello world' test.txt
选项
grep的选项也很多,这里只介绍三个:
- -n:显示匹配行及行号
- -v:显示不包含匹配文本的所有行(相当于求反)
- -i:忽略大小写
加上 -n:
grep -n hello test.txt //结果 2:hello world 6:hello linux
可以看到每行前面都加上了它们所在的行号。
-v 命令相当于对查找结果的求反:
grep -v hello test.txt //结果 this is test this is test asdhsadyuscbjnas
可以看到,它将不包含 hello 的行都输出来了,此时也可以加上行号的:
grep -vn hello test.txt //结果 1: 3: 4:this is test 5: 7: 8:this is test 9: 10:asdhsadyuscbjnas
-i 忽略大小写就不用多说了:
grep -i Hello test.txt //结果 hello world hello linux
再啰嗦一句,Linux命令选项是可以连用的,你可以这样:
grep -nvi Hello test.txt
模式查找
所谓模式查找,就是正则表达式查找,grep支持正则模式查找,这里就简单说两个例子:
- ^a:行首,查找以 a开头的行
- b$:行尾,查找以 b结束的行
grep ^h test.txt //结果 hello world hello linux