TIPTOP查找命令grep用法记录
1、与find的区别:find 命令用于在系统中搜索符合条件的文件名、文件名、文件名(重要的事情说三遍)。Grep可以查找文件内的内容。
用法:
从文件内容查找匹配指定字符串的行:
$ grep “被查找的字符串” 文件名
常用选项:
-e :表示或者。
-i :忽略大小写(ignore case)。
-v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。
-n :显示行号
-w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker
-r :递归查找
注意:”被查找的字符串”,可以是正则表示式
例子:[]表示其中的某一个字符,只要匹配其中一个就行[abc],表示a或者b或者c:
find “t[ea]st” test.txt
搜索并输出含有test或tast的行
更多正则表示式需要自己去摸索
例子:
2、在/etc/passwd文件中查找单词“linuxtechi”
grep linuxtechi /etc/passwd
3、查找当前目录下哪个4GL文件用到了“ima904”这个字段
grep “ima904” *.4gl
4、更进一步,我们在看所有的模块下,有哪个文件用到了“ima904”这个字段
grep -r “ima904” ./
其中 ./ 表示当面目录。也可以改为 grep -r “ima904” /u1/topprod
4、查看符合条件的日志条目
grep -n ‘2019-10-24 00:01:11’ *.log
再来,这次,我们的目标是,找出所有现在打开的程序asfi301都kill掉。
1、ps -ef 命令将某个进程显示出来
查出来的命令太多,所以要用到grep来进一步搜索
2、在上面命令结果里面,只搜索包含有fglrun 的结果
ps -ef | grep fglrun
还是太多了。我们继续
3、在上面命令结果里面,只搜索包含有asfi301 的结果
ps -ef | grep fglrun | grep asfi301
这就是我们要的结果了。这个时候我们可以找到PID进程号,再用root账号kill 进程号
但是,要操作次数太多太麻烦了,我们继续
我们只要结果中的PID号。其中 print $2是显示结果中第二列
ps -ef | grep fglrun | grep asfi301|awk ‘{print $2}’
在这个基础上就可以用下面语句一次kill掉。当然了,这步的执行会强行关掉用户打开的asfi301程序,可能会造成异常。不要随便操作。在此仅作举例用。
ps -ef | grep fglrun | grep asfi301|awk ‘{print $2}’|xargs kill -9
这里是输出ps -ef |grep … 结果的第二列的内容然后通过动态参数xargs传递给kill -9,其实第二列内容就是上面结果中的进程号!
收集来的匹配的实例:
grep -c “48” test.txt 统计所有以“48”字符开头的行有多少
grep -i “May” test.txt 不区分大小写查找“May”所有的行)
grep -n “48” test.txt 显示行号;显示匹配字符“48”的行及行号,相同于 nl test.txt |grep 48)
grep -v “48” test.txt 显示输出没有字符“48”所有的行)
grep “471” test.txt 显示输出字符“471”所在的行)
grep “48;” test.txt 显示输出以字符“48”开头,并在字符“48”后是一个tab键所在的行
grep “48[34]” test.txt 显示输出以字符“48”开头,第三个字符是“3”或是“4”的所有的行)
grep “^[^48]” test.txt 显示输出行首不是字符“48”的行)
grep “[Mm]ay” test.txt 设置大小写查找:显示输出第一个字符以“M”或“m”开头,以字符“ay”结束的行)
grep “K…D” test.txt 显示输出第一个字符是“K”,第二、三、四是任意字符,第五个字符是“D”所在的行)
grep “[A-Z][9]D” test.txt 显示输出第一个字符的范围是“A-D”,第二个字符是“9”,第三个字符的是“D”的所有的行
grep “[35]..1998” test.txt 显示第一个字符是3或5,第二三个字符是任意,以1998结尾的所有行
grep “4\{2,\}” test.txt 模式出现几率查找:显示输出字符“4”至少重复出现两次的所有行
grep “9\{3,\}” test.txt 模式出现几率查找:显示输出字符“9”至少重复出现三次的所有行
grep “9\{2,3\}” test.txt 模式出现几率查找:显示输出字符“9”重复出现的次数在一定范围内,重复出现2次或3次所有行
grep -n “^$” test.txt 显示输出空行的行号
ls -l |grep “^d” 如果要查询目录列表中的目录 同:ls -d *
ls -l |grep “^d[d]” 在一个目录中查询不包含目录的所有文件
ls -l |grpe “^d…..x..x” 查询其他用户和用户组成员有可执行权限的目录集合
附正则表达式
- 字符匹配
- . 匹配任意单个字符
- [abc] 匹配执行范围内的任意单个字符abc都符合,数量可以用 [0-9]
- [^abc] 取反
- [:alnum:] 数字大小写 [a-zA-Z0-9]
- [:alpha:] 大小写字母 [a-zA-z]
- [:lower:] 小写字母 [a-z]
- [:upper:] 大写字母 [A-Z]
- [:digit:] 数字 [0-9]
- [:punct:] 标点符号
- 匹配次数
- * 0次或者多次,是贪婪匹配
- \?0次或者一次
- \+ 最少一次
- \{n\} 匹配n次
- \{m,n\} 最少m次,最多n次
- \{,n\} 最多n次
- \{m,\} 最少m次
- 位置锚定
- ^ 行首锚定
- $ 结尾
- ^$ 空行
- 向后引用
- \1:表示前面第一个括号内匹配之后产生的字符,在\1的位置要在出现一次
- \2:
转载请注明:赫非域 » TIPTOP查找命令grep用法记录