剑客grep
来者何人
grep
是linux上的字符串搜索匹配命令。这个名字来自于linux编辑器vim
的一个命令g/re/p
,表示全局匹配某个正则表达式并打印出来,这也体现了grep
自身的功能。
基本技能
搜索字符串
比如我们想在一个有10万条信息的文本中找到Zhang3
的信息:
$ cat students.txt
name age phone address
LiSi 18 10086 Beijing
Zhang3 19 10001 Sichuan
Wang5 19 91182 Newyork
我们可以借助grep来搜索:
$ grep Zhang3 students.txt
Zhang3 19 10001 Sichuan
可以看到,基本命令格式包括grep <要匹配的内容> <要搜索的文件>
搜索所在行 -n
能否查到Zhang3
的信息在第几行?
通过-n参数,即 number 行号
$ grep -n Zhang3 students.txt
3:Zhang3 19 10001 Sichuan
如何查找除Zhang3
以外的其他信息?
通过-v参数,即 –invert-match,反选除Zhang3
以外的信息
$ grep -v Zhang3 students.txt
name age phone address
LiSi 18 10086 Beijing
Wang5 19 91182 Newyork
不知道具体大小写,搜索李四怎么办?
可以用 -i,–ignore-case 即忽略大小写
$ grep -i lisi students.txt
LiSi 18 10086 Beijing
复杂模式匹配
如果想搜索张三和李四两位同学的信息怎么做?
用-E
表示正则表达式,然后用“A|B”选择A或者B。
$ grep -E 'Zhang3|LiSi' students.txt
LiSi 18 10086 Beijing
Zhang3 19 10001 Sichuan