Linux之过滤器
过滤器就是读取数据,对数据执行一些操作后,写入数据的程序。可以与管道符配合使用。本文将列举一些Linux中我认为常用的过滤器
cat
cat
(catenate):将标准输入传向标准输出(但最重要的作用是组合文件)
听起来好像没啥用,但通过和重定向结合,他有许多有趣的用法,例如
cat > data
:快速创建文件,将键盘输入的内容写入data文件中,输入结束后按^D
发送eof信号cat < data
:快速显示文件,将文件的内容打印到屏幕上cata < data > newdata
:复制文件,将data的内容复制到newdata中
但由于cat
通常都是需要从文件读取数据的,所以cat
将文件名作为了参数,相当于省略了<
,同时还支持多个文件,语法为
cat [-bns] [file…]
当指定多个文件时,将依次读取每个文件的数据,并依次输出,这就是cat
最常用的用法:组合文件,例如
cat data newdata
他的一些常用选项的含义
-n
(number):在每行前面加一个行号-b
(blank):和-n
选项一起使用,告诉cat不要对空白行编号-s
(squeeze):将多个连续空白行替换为一个空白行
还有两个类似的命令tac
(cat反转),用法和cat
一样,但会把输出各行的顺序反转。命令rev
,会把各行中的字符顺序反转。
head和tail
当文件太大(比如log),我们可以用head
或tail
查看文件头/尾部的部分数据,其语法如下
tail [-n lines] [file]
head [-n lines] [file]
例如
tail -n 1000 app.log
head -n 1000 app.log
grep
查找对应的内容,语法为:
grep [options] pattern [file…]
其中pattern
是要查找的内容,可以用正则,file
是被搜索的文件,将查找出含有搜索内容的行。例如
grep root /etc/passwd
下面列举一些我认为常用的选项(省略-,注意大小写)
c
:显示所查找到的行数量i
:忽略大小写n
:显示时展示行号l
:显示包含搜索内容的文件名w
:搜索完整单词x
:搜索完整行,v
:反转,显示不含有搜索内容的行r
:搜索整个目录,搜索指定目录及其子目录下所有的文件E
:使用扩展正则表达式,功能更强大
nl
添加行号,语法为
nl file
默认会对所有非空行添加行号,若需要对所有行都添加,可以使用
nl -b a file