grep与cat、sed的结合
Commentgrep查找命令
grep命令是linux系统中,最常用的文件字符串查找命令,职业生涯中,我们几乎离不开它。
下面是它最简单的用法,不过实际情况下,我们通常会添加很多参数或结合其他的命令去进行使用。
1 | grep "<pattern>" <fileName> |
常用命令参数:
1 | <fileName>: 文件名称,多个文件使用空格隔开 |
如,查询哪些文件中包含“ok”:
1 | grep "ok" -r -l --include="*" ./ |
grep和cat/tail的结合
通过grep和cat/tail的结合,我们可以轻易的实现返回文件中的关键字所在行、以及附近指定行的内容,尤其是在我们查询程序日志的时候,用的非常多。
语法:
1 | cat <fileName> | grep <pattern> <cmd> |
参数说明:
1 | <fileName>:文件名称,多个文件使用空格隔开 |
cat结合示例:在文件default.log中查找“异常”,并收集前后10行记录
1 | cat default.log | grep "异常" -C 10 |
tail结合示例:在文件default.log中查找“异常”,并进行实时收集
1 | tail -f default.log | grep "异常" |
grep和sed的结合
sed命令是用来编辑一个或多个文件、简化对文件反复操作的神器,它和grep的结合令我们的文件操作起来更加的得心应手。
我们下面就来看看,它能给我们带来怎样的体验。
sed语法介绍:
1 | sed <命令参数> <动作> <文件> |
常用命令参数:
1 | -i: 直接修改配合的文件内容 |
常用动作说明:
1 | s: 替换字符,替换指定的字符串,如:sed -i 's/匹配字符/新字符/g' a.txt,末尾的/g表示替换所有匹配的字符 |
注: 动作前面的数字表示第几号,或者几行到几行
扩展案例:
查找某个文件中的关键字,并在其下新增一行数据
1 | sed -i '/关键字/a\新增的一行数据' a.txt |
grep与sed命令结合的示例:
上面我们已经了解sed命令的特性,那我们现在就试试,它和grep命令的结合,究竟能撞出怎样的火花?
下面的命令实现的是:将某个目录以及子目录的所有文件中的关键字“ok”统一替换为“yes”
1 | sed -i 's/ok/yes/g' `grep "ok" -r -l --include="*" ./` |
上面 `` 括起来的grep命令,表示将grep命令查询的结果作为操作文件。
- 本文作者:沙果栗子本文链接:https://32e.co/2020/06/20/shell-grep-cat-sed/版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!