shell中的grep

grep主要用来进行字符串数据对比,然后将符合用户需要的字符串打印出来。

1. 查找特定字符串

1
grep -n [-A] [-B] "要查找的字符串" --color=auto filename
option description
-n 显示行在文件中的行号
-A 后面跟数字,所匹配行之后的几行也会打印
-B 后面跟数字,所匹配行之前的几行也会打印
–color 颜色标注

2. 反向选择,没有特定字符串的行

1
grep -nv [-A] [-B] "要查找的字符串" --color=auto filename

加上 -v选项即可

3. 字符串中可以使用正则匹配

在参数 “要查找的字符串” 中可以使用正则匹配来匹配需要的行。

1
grep -n "^the" filename

上面匹配以 “the”开头的行

1
2
grep -n "^$" filename 
# 显示空白行

4. 与管道命令|一起用从文件中搜索关键字

比如有个文件log

1
2
3
4
5
6
7
8
9
10
11
//log
Command: ./simv -cm line+tgl+fsm+cond -l sim.log
Chronologic VCS simulator copyright 1991-2014
Contains Synopsys proprietary information.
Compiler version I-2014.03; Runtime version I-2014.03; Aug 23 22:22 2019
VCD+ Writer I-2014.03 Copyright (c) 1991-2014 by Synopsys Inc.
$finish at simulation time 0
V C S S i m u l a t i o n R e p o r t
Time: 0 ps
CPU Time: 0.650 seconds; Data structure size: 0.0Mb
Fri Aug 23 22:22:57 2019

我们想要看看这个文件中包含Command关键字的行,可以在命令行shell中输入:

1
more log | grep Command

接着命令行打印出文件log中包含Command的行:

1
Command: ./simv -cm line+tgl+fsm+cond -l sim.log

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!