五.Linux三剑客之grep命令

grep命令选项

-c 只输出匹配行的数量
-i 搜索时忽略大小写
-h 查询多文件时不显示文件名
-l 只列出符合匹配的文件名,不列出具体的行
-n 列出所有匹配的行,并显示行号
-s 不显示不存在或无匹配文本的错误信息
-v 显示不包含匹配文本的所有行
-w 匹配整词
-x 匹配整行
-r 递归搜索
-q 禁止输出任何结果,以退出状态表示搜索是否成功
-b 打印匹配行距文件头部的偏移量,以字节为单位
-E 支持拓展的正则表达式
-F 不支持正则表达式,按照字符串的字面意思进行匹配

grep选项demo

  • 无选项
$ grep 11 1.txt 
11:a
  • -c选项
$ grep -c 1 1.txt 2.txt 
1.txt:1
2.txt:1
  • -n选项
$ grep -n 11 *
1.txt:1:11:a
new1.txt:1:11:a
sort1.txt:1:11:a
  • -v选项
$ grep -v 11 1.txt 
2:b
2:e
5:e
5:e
6:o
5:e
3:p
04:p
  • -i选项
$ grep -i A 1.txt 
11:a
  • -h选项
$ grep 11 *
1.txt:11:a
new1.txt:11:a
sort1.txt:11:a
  • -l选项
$ grep -l 11 *
1.txt
new1.txt
sort1.txt
  • -s选项
$ grep  123 123.txt 
grep: 123.txt: 没有那个文件或目录
$ grep  -s 1 123.txt
  • -w选项
$ grep 11:* 1.txt 
11:a
$ grep -w 11:* 1.txt 
11:a

!!按照我的理解此处不应该搜索到才对

  • -x选项
$ grep  '2:d' 2.txt 
2:d
2:dd
2:d  d
$ grep -w '2:d' 2.txt 
2:d
2:d  d
$ grep -x '2:d' 2.txt 
2:d
  • -E选项
    等价于egrep
    拓展正则表达式,添加以下符号:“|”,“+”,“?”,“()”
    “|“ :或
    “+” : 重复前面的字符串至少一次
    ”?“ :表示重复0-1次前面的字符
$ grep -E '(1|2|):' 2.txt 
1:c
2:d
2:dd
2:d  d
:ddddddd

grep与其他命令组合使用

$ ps -ef | grep fitcx
# 查找指定进程
$ ls -l | grep .*.txt
# 查找当前目录txt文件
$ find . -name "*.txt" -exec grep -l -n "11" {} \;
# 查找包含“11”的txt文件
./1.txt
./sort1.txt
./new1.txt

    原文作者:靳一鸣
    原文地址: https://www.jianshu.com/p/61801636e72f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞