参考文章:
grep命令是global regular expression print(全局正则表达式输出)的缩写,它是linux系统中最强大的命令之一。它在一个或者多个文件中搜索与给定的内容的匹配的行,并将匹配的内容输出。
显示不以#开头的行
grep ^# 101_所属网格.sql
grep ^-- 101_所属网格.sql
从单个文件查找指定字符串
grep "create" 101_所属网格.sql
从多个文件查找指定字符串
grep "create" *.sql
忽略大小写, 并显示行号
grep -in "creaTe" 101_所属网格.sql
显示查找到的总行数
grep -c "creaTe" 101_所属网格.sql
0
grep -c "create" 101_所属网格.sql
2
查找目录下所有文件,并只输出含有该文本的文件名
grep -l "tag_1117" *
102_支行客户经理.sql
递归查找目录下所有文件,并只输出含有该文本的文件路径
grep -rl "tag_1117" .
./102_支行客户经理.sql
除开某一个目录不匹配
grep -R --exclude-dir="102_支行客户经理.sql" "tag_1117"
102_支行客户经理.sql: '是否为归属网格' tag_1117,
102_支行客户经理.sql:-- '是否为归属网格' tag_1117,
去掉文本中的空行
grep -q
grep -q
grep -q
cat test.sql | grep -v "^\s*$"
grep -q
grep -q
grep -q
过滤注释行
grep -q
grep -q
## 我是注释grep -q
cat test.sql | grep -v "^#"
grep -q
grep -q
同时过滤空白行与注释行
cat test.sql | grep -v "^$" | grep -v "^#"
grep -q
grep -q
打印匹配行的后5行
grep -A 5 'rumenz' 1.txt --打印匹配行的后5行
grep -B 5 'rumenz' 1.txt --打印匹配行的前5行
grep -C 5 'rumenz' 1.txt --打印匹配行的前后5行
模糊匹配
zhouy@hzhb:~/projects/szyx/scripts/update_mins$ grep "tag" 101_所属网格.sql
精确匹配
zhouy@hzhb:~/projects/szyx/scripts/update_mins$ grep -w "tag_1024" 101_所属网格.sql
同时匹配多个字符串
zhouy@hzhb:~/projects/szyx/scripts/update_mins$ cat 101_所属网格.sql | grep -e "tag" -e "1024" -o