当前位置:

Linux:grep命令和正则表达式

访客 2024-01-05 1143 0

grep命令

  • Linux三剑客之一,文本过滤器(根据文本内容过滤文件)
语法格式:grep[参数][匹配规则][操作对象]参数;-n:过滤文本时,将过滤出来的内容在文件内的行号显示出来-A:匹配成功之后,将匹配行的后n行显示出来-B:匹配成功之后,将匹配行的前n行显示出来-C:匹配成功之后,将匹配行的前后n行显示出来-c:只显示匹配成功的行数-o:只显示匹配成功的内容-v:反向过滤-q:静默输出-i:忽略大小写-l:匹配成功之后,将文本的名称打印出来-w:字符串精确匹配-R|-r:递归匹配-E:使用扩展正则等价于egrep

知识储备

$?:上一行命令执行的结果,0代表执行成功,其他数字代表执行失败。(通常配合-q使用在脚本中)wc:匹配行数-l:打印匹配行数-c:打印匹配的字节数在/etc目录下,有多少个文件包含rootgrep-rl'root'/etc/|wc-l

正则表达式

1.正则表达式的分类

  • 普通正则表达式

  • 拓展正则表达式

1.普通正则表达式

^:以某字符开头$:以某字符结尾.:匹配除换行符之外的任意单个字符*:匹配前导字符的任意个数[]:某组字符串的任意一个字符[^]:取反[a-z]:匹配小写字母[A-Z]:匹配大写字母[a-zA-Z]:匹配字母[0-9]:匹配数字\:取消转义():分组\n:代表第n个分组

2.拓展正则

{}:匹配的次数{n}:匹配n次{n,}:至少匹配n次{n,m}:匹配n到m次{,m}:最多匹配m次:匹配至少有一个前导字符?:匹配一个或零个前导字符|:或

案例

案例1:在/etc/passwd文件中,匹配以ftp开头的行grep'^ftp'/etc/passwd案例2:在/etc/passwd文件中,匹配以bash结尾的行grep'bash$'/etc/passwd案例3:匹配本机中有哪些ipipa|grep-oE'([0-9]{1,3}\.){3}[0-9]{1,3}'案例4:要求将/etc/fstab中的去掉包含#开头的行,且要求#后至少有一个空格grep-vE'^#\'/etc/fstab案例5:找出文件中至少有一个空格的行grep-E'\'xxx案例6:将nginx.conf文件中以#开头的行和空行,全部删除grep-vE'^\*#|^$'/etc/nginx/nginx.conf^$:代表空行

发表评论

  • 评论列表
还没有人评论,快来抢沙发吧~