Linux小推车

Linux Day16: grep/egrep/fgrep文本查

2018-10-20  本文已影响3人  泥人吴

文本查找的需要:

grep,egrep,fgrep
grep:根据模式搜索文本,并将符合模式的文本行显示出来
Pattern:文本字符和正则表达式的元字符所组合而成匹配条件

grep:

# 表达式
SYNOPSIS
       grep [OPTIONS] PATTERN [FILE...]
       grep [OPTIONS] [-e PATTERN]...  [-f FILE]...  [FILE...]
$ grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
$ man grep
$ # -i:不区分大小写
$ # --color 显示颜色
$ grep --color  'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
$ #-v:反向匹配,显示没有被模式匹配的行
$ grep -v  'root' /etc/passwd
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
...
$ # -o:只显示被模式匹配的本身
$ grep -o 'root' /etc/passwd
root
root
root

正则表达式:

Regular EXPression,REGEXP (下次课程学习)
复习Linux Day6

*:任意长度的任意字符
?:任意单个字符
[ ] :指定范围内
[ ^ ]:指定范围外的

元字符:

. :匹配任意单个字符
[ ]: 匹配指定范围内的单个字符
[ ^ ]:匹配指定范围外的单个字符
字符集合:[ :digit:] 数字, [ :lower:] 小写,[ :upper :]大写,[ :punct:]标点符号,[:space:]空格,[:alpha:]所有字母,[:alnum:]所有字符字母

\<或\b放在后面 :锚定词首, 其后面的任意字符必须作为单词首部出现
\>或\b (放在前面): 锚定词尾,其前面的任意字符必须作为单词的尾部出现

分组:\ ( \ )

\ (ab)* 后向引用(ab)的意思

$ # .匹配单个任意字符
$ grep  'r..t' /etc/passwd
root:x:0:0:root:/root:/bin/bash
$ # 字符个数:* 匹配其前面的字符任意次(区别任意长度)

$ # 创建一个文件text.txt
$ nano text.txt
$ cat text.txt
a
b
ab
adb
amnb
amnmnb
amnmbmnb

$ # a.*b:任意长度的任意字符(以a开头,以b结束,中间什么都可以)
$ grep 'a.*b' text.txt
ab
adb
amnb
amnmnb
amnmbmnb

$ # a*b的意义:
$ grep 'a*b' text.txt
b
ab
adb
amnb
amnmnb
amnmbmnb
$ #匹配出了amnmbmnb:正则表达式的贪婪模式:尽可能的匹配

$ # ?:做次数匹配,匹配其前面的字符1次/0次
$ grep 'a?b' text.txt
$ grep 'a\?b' text.txt
b
ab
adb
amnb
amnmnb
amnmbmnb
$ # ?需要.'\'做转义,grep做部分匹配

$ # {m,n\}在bashell中就是展开的意思,其前面加上\{}表示不展开的意思
$ # \{m,n\}:匹配其前面的字符至少m次,至多n次
$ grep 'a\{1,3\}b' text.txt
ab
$ grep 'a.\{1,3\}b' text.txt
adb
amnb
amnmbmnb
$ #grep 'a.\{1,3\}b' text.txt表示a,b之间至少包含1个字符最多出现三个字符,所以注意理解amn
mbmnb,以及区别grep 'a\{1,3\}b' text.txt

位置锚定:

^: 锚定行首,此字符后面的字符必须出现在行首
$ :锚定行尾。
`^$` : 表示空白行
$ grep 'b..h$' /etc/passwd
root:x:0:0:root:/root:/bin/bash
ubuntu:x:500:500:ubuntu,,,:/home/ubuntu:/bin/bash
...
# 查看空白行
$ grep '^$' /etc/passwd | wc -l
0

友情阅读推荐:

生信技能树公益视频合辑:学习顺序是linux,r,软件安装,geo,小技巧,ngs组学!
请猛戳下面链接
B站链接:https://m.bilibili.com/space/338686099

YouTube链接:https://m.youtube.com/channel/UC67sImqK7V8tSWHMG8azIVA/playlists

生信工程师入门最佳指南:https://mp.weixin.qq.com/s/vaX4ttaLIa19MefD86WfUA

学徒培养:https://mp.weixin.qq.com/s/3jw3_PgZXYd7FomxEMxFmw

上一篇 下一篇

猜你喜欢

热点阅读