Linux基础grep、egrep和fgrep

grep、egrep和fgrep简介

三者之间的关系:grep -E 等同于 egrep,grep -F 等同于 fgrep。

命令 是否支持正则 支持的正则类型
grep ☑️ 基本正则表达式
egrep ☑️ 扩展正则表达式
fgrep ✖️

grep简单示例

-> cat data4.txt
This is line number 1.
This is line number 2.
This is line number 3.
This is line number 4.
This is line number 11.
This is line number 6

# “--color”选项会将数字“1”和“11”会以红色标记出来
-> grep --color "1" data4.txt
This is line number 1.
This is line number 11.

# 管道的方式也可以实现和上面一样的效果
—> cat data4.txt | grep --color "1"
This is line number 1.
This is line number 11.

# "-v"选项实现反查效果
—> cat data4.txt | grep -v "1"
This is line number 2.
This is line number 3.
This is line number 4.
This is line number 6

-> cat -n data4.txt
     1  This is line number 1.
     2  This is line number 2.
     3  This is line number 3.
     4  This is line number 4.
     5  This is line number 11.
     6  This is line number 6

# "-n"选项显示行号
-> cat data4.txt | grep -n --color "1"
1:This is line number 1.
5:This is line number 11.

# "-c"选项显示到底搜索了多少行
-> cat data4.txt | grep -c "1"
2

# "-i"选项可以实现不区分字母的大小写
-> grep  "this" data4.txt
-> grep -i "this" data4.txt
This is line number 1.
This is line number 2.
This is line number 3.
This is line number 4.
This is line number 11.
This is line number 6

grep环顾四周

-> cat data5.txt
This is line number 1.
This is line number 2.
This is line number 3.
This is line number 4.
This is line number 5.
This is line number 6.

# "-A"选项是指目标数据下面的若干行,是After的缩写。“-A 1”表示展示匹配行下面一行的内容。
-> grep -A 1 5 data5.txt
This is line number 5.
This is line number 6.

# "-B"选项是指目标数据前面的若干行,是Before的缩写。“-B 1”表示展示匹配行上面一行的内容。
-> grep -B 1 5 data5.txt
This is line number 4.
This is line number 5.

# "-C"选项,是“-A”和“-B”选项的合体,除了展示匹配行之外,还展示出匹配行上面和下面各若干行。
# 示例中“-C 2”展示匹配行上面2行和下面2行的内容,最大行才6,所以只能展示到6了。
-> grep -C 2 5 data5.tx
This is line number 3.
This is line number 4.
This is line number 5.
This is line number 6.

grep处理多个文件

-> cat test1.txt
first
-> cat test2.txt
first second
-> cat test3.txt
third
# "-l"选项实现在多个文件中查找,返回文件名 
-> grep -l "first" *.txt
test1
test2

# "-L"选项实现反向操作
-> grep -L "first" *.txt
test3

grep中词的含义

-> cat test4
I love you.
My gloves are red.

# 在grep中,词一般是由字母、数字和下划线组成的,且词与词之间通常使用空格、制表符(tab)或换
# 行符(\n)分隔,所以查出来的结果不是我们所要的
-> grep love test4
I love you.
My gloves are red.

# "-w"选项实现这个功能
-> grep -w love test4
I love you.

# “<>”也可以实现这个功能,需要添加“\”
-> grep ' \<love\>' test4
I love you.

grep查询中的特殊字符的处理

-> cat test5.
This is a nice $&#^test.

-> grep '^test' test5

# 在fgrep眼里没有特殊字符,都是普通字符
-> fgrep '^test' test5
This is a nice $&#^test.

猜你喜欢

转载自blog.csdn.net/qq_33704186/article/details/83757686
今日推荐