简单整理下 grep 的几个命令,其实是翻译了一篇博客。
文件:
$ cat file.txt
ostechnix
Ostechnix
o$technix
linux
linus
unix
technology
hello world
HELLO world
1、 查找字符串(不带单引号也能查找成功,但建议还是带上,一来正则查找不带单引号会出错,第二个就是也不差多敲着两下)
$ grep 'nix' file.txt
ostechnix
Ostechnix
o$technix
unix
2、查找并显示行号
grep -n 'nix' file.txt
1:ostechnix
2:Ostechnix
3:o$technix
6:unix
3、grep 命令默认区分大小写
grep 'hello world' file.txt
hello world
4、可以人为设置忽略大小写
grep -i 'hello world' file.txt
hello world
HELLO world
5、更多场景下,grep 是和 管道 命令搭配使用的
cat file.txt | grep os
ostechnix
出上面常见的使用方式外,grep 也可以使用正则表达查询
^
表示起始字符串。$
表示结束字符串。.
表示任意一个字符,只代表一个字符。
先看个全乎的
$ grep tech file.txt
ostechnix
Ostechnix
o$technix
technology
(这里不加单引号是会报错的)
$ grep '^tech' file.txt
technology
$ grep 'x$' file.txt
ostechnix
Ostechnix
o$technix
linux
unix
$ grep '^.n' file.txt
unix
egrep
是 grep
命令的扩展,相当于 grep -E
命令,但它支持更为复杂的正则表达式。
7、查找以 l
或 o
开头的字符串
$ egrep '^(l|o)' file.txt
o$technix
linux
linus
8、查找以 l, m, n, o, p, q, r, s, t, u 开头的字符串
$ egrep '^[l-u]' file.txt
ostechnix
o$technix
linux
linus
unix
technology
9、查找以 l, m, n, o, p, q, r, s, t, u 或它们的大写开头的字符串
$ egrep '^[l-u]|[L-U]' file.txt
or
$ egrep '^([l-u]|[L-U])' file.txt
ostechnix
Ostechnix
o$technix
linux
linus
unix
technology
HELLO world