Grep
首先,先解释一下名字的由来
Grep的全称叫做“全局查找规则表达式并打印出该行”,翻译成英文就是“globally search for the regular expression and print out the line”,哈哈,比较复杂吧
如上Grep命令的功能就是从一个或多个文件里查找字符串样式。如果样式包括空白,它必须括上引号。
格式:
grep wordpattern filename1 filename2 …
在书里看到ps 命令,由于刚接触到SHELL,有些命令还没见过,或者见过也忘记了
PS查了一下,大概是显示终端进程的,基本有这些选项和功能:
1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -A 显示所有程序。
3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定"A"参数相同。
5)ps e 列出程序时,显示每个程序所使用的环境变量。
6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps -H 显示树状结构,表示程序间的相互关系。
8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
9)ps s 采用程序信号的格式显示程序状况。
10)ps S 列出程序时,包括已中断的子程序资料。
11)ps -t<终端机编号>
指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u
以用户为主的格式来显示程序状况。
13)ps x
显示所有程序,不以终端机来区分。
最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。
grep经常和管道一起用,查找出符合的样式再进行操作。
在用grep进行查找样式的时候,成功或失败都会有返回值
例如:成功返回值是0,没有找到样式返回1,保存在“$?”里,$?保存了各种操作的返回值。
grep 选项:
–d 在被发现的每一行前面标上程序的模块号码。(这个模块号码是什么?PID么?还没弄明白。)
-c 显示匹配行的数量而不是比配本身
打印的是匹配的行数,而不是匹配的数量,例如:
#myfile
hello hello hello
world
hello
执行 grep –c hello myfile后 打印出3,而不是4
-h 不显示文件名 貌似没什么用,不知道用来干什么的,因为单执行grep也不显示文件名
-i 做比较的时候忽略字母大小写 就是打印的时候是打印原型,其他的没什么好说的
-l 只在匹配行列出文件名 这条命令我觉得很奇怪,什么叫“只在匹配行列出文件名”
?不匹配的也不打印啊·我晕
-n 在每一行前显示在文件中相对的行数,也没什么好说的
-s 安静的工作。除了错误信息之外不显示任何信息 不理解,因为使用了这个命令还是打印出了查找出的行
-v 倒序查找,只显示不匹配的行 说是倒序,貌似我也没看出是倒序,还是顺序查找的啊
-w 把表达式当作一个字来查找。也没什么说的