美文网首页
80.读鸟哥私房菜1|grep+正则表达式

80.读鸟哥私房菜1|grep+正则表达式

作者: 人生玩家Eli | 来源:发表于2022-11-01 21:06 被阅读0次
cover20220907.png

说来惭愧,从年初开始看鸟哥的私房菜,当时觉得要学的东西好多呀,好想都学会呀!我要这两个月学这个,下两个月学那个!

结果到现在还没看完一半。

grep用法(后面会通过grep命令来练习正则表达式)

grep [-A] [-B] [--color=auto] '搜寻字串' filename

  • -A: 后面可加数字, after的意思,除了列出该行外,后面n行也列出来
  • -B: 后面可加数字, befer的意思,....
  • -n: 显示行号
  • -i: 忽略大小写
  • -v: 反向选择,即查找不包含'搜寻字串'的行
  • -c: 计算找到的次数
  • -a: 将binary文件以text文件的方式查找
  • -r: 递归查找(用来查找文件夹下的所有文件)

grep+正则表达式的例子

1.查找字符串

  • grep -n 'the' regular_express.txt

2.中括号

  • grep -n 't[ae]st' regular_express.txt 可以查到"test"和"tast"
  • grep -n '[^g]oo' regular_express.txt 查找oo,但oo前面不能是g
  • grep -n '[^abcdefg....z]oo' regular_express.txt oo前不能是小写字母,但这样写太麻烦了
  • grep -n '[^a-z]oo' regular_express.txt oo前不能是小写字母,可以这样写
  • grep -n '[a-zA-Z0-9]' regular_express.txt 查找字母数字

3.行首行尾字符^$

  • grep -n '^the' regular_express.txt 查找以the开头的行
  • grep -n '^[a-z]' regular_express.txt 查找以小写字母开头的行
  • grep -n '^[^a-zA-Z]' regular_express.txt 不要以字母开头的
  • grep -n '\.$' regular_express.txt 查找行尾是点的行
  • grep -n '^$' regular_express.txt 查找空白行

4.通配符号

  • .表示任意1个字符
  • *表示重复前一个字符至少0次
  • grep -n 'g.*g' regular_express.txt g开头g结尾
  • grep -n '[0-9][0-9]*' regular_express.txt 找出任意数字

5.连续字符

  • grep -n 'o\{2\}' regular_express.txt 查找oo
  • grep -n 'go\{2,5\}' regular_express.txt 查找g后面有2到5个o的行

6.延伸用法

  • grep -E // 这样可以使用延伸的正则表示法

  • +: 重复前一个字符至少1次

  • ?: 重复前一个字符0次or1次

  • |: 表示或

  • (): 多个字符括起来表示一组

  • grep -E "g(oo|la)?d" regular_express.txt 查找good/glad/gd

应用

因为我的所有笔记都以纯文本的形式存放在linux系统上,所以下面的命令对于我来说还是挺实用的。

1.查找指定目录下所有文件的内容

grep -nr "xxx" 目录名

2.查找当前目录下文件的个数(不包括子目录)

ls -l | grep "^-" | wc -l 在"ls -l"列出的结果中,文件以"-"开头,"wc -l"用来统计行数

3.查找当前目录下文件的个数(包括子目录)

ls -lR | grep "^-" | wc -l

4.查找当前目录下文件夹的个数(包括子目录)

ls -lR | grep "^d" | wc -l 在"ls -l"列出的结果中,文件夹以"d"开头

相关文章

网友评论

      本文标题:80.读鸟哥私房菜1|grep+正则表达式

      本文链接:https://www.haomeiwen.com/subject/slqstdtx.html