grep常用方法 您所在的位置:网站首页 以下哪个grep用法可以忽略大小写过滤关键字 grep常用方法

grep常用方法

2024-07-11 00:44| 来源: 网络整理| 查看: 265

grep常用方法 grep常用参数grep匹配多个关键字0.grep高亮1.grep ‘字符串’1.1完全匹配字符串-x 2.反向匹配grep -v ‘字符串’不包括`grep`本身 3、 grep -E 同时匹配多个关键字–`或`关系grep过滤空白行和注释行 4、 同时匹配多个关键字–`且`关系5、显示前几行和后几行6. 只过滤文件名7. 过滤还有特殊字符的字符串 通配符(匹配文件名)常用正则表达式(匹配文件内容)grep常用语法

grep常用参数

学习资料:https://blog.51cto.com/oldboy/5430941 https://www.linuxcool.com/grep https://wangchujiang.com/linux-command/c/grep.html

参数释义-i不区分大小写-v结果取反(匹配指定的字符串以外的内容)-A(以后的行)after-B(以前的行)before-C匹配的前后几行-n显示行号-E正则表达式-b显示匹配行距文件头部的偏移量-c只显示匹配的行数-F匹配固定字符串的内容-h搜索多文件时不显示文件名-l只显示符合匹配条件的文件名-o显示匹配词距文件头部的偏移量-q静默执行模式-r递归搜索模式-s不显示没有匹配文本的错误信息-v显示不包含匹配文本的所有行-w精准匹配整词-x精准匹配整行–color指定颜色,默认值是–color=auto grep匹配多个关键字

grep命令非常常用,经常用于匹配文本字符。

在这里插入图片描述

一般情况下,grep 命令只能匹配一个关键字,怎么实现匹配多个关键字呢?

下面看几种情况:

# 示例:查看rhel系统的版本 ## -s 不显示错误信息 ## -h 不标示该列所属的文件名称 ## -o 只输出文件中匹配到的部分 ## -E 使用正则表达式 grep -shoE '[0-9]+' /etc/almalinux-release /etc/rocky-release /etc/centos-release | head -1

在这里插入图片描述

0.grep高亮

参考: https://blog.csdn.net/akaks0/article/details/72902390

# grep高亮 ## -E 正则表达式 ## --color 指定颜色,默认值是--color=auto grep -E "word1|word2|word3" file.txt --color 1.grep ‘字符串’

这是最普通的使用方式:

grep 关键字 文件名 # 匹配文件中包含 MANPATH 的那一行: cat manpath.config | grep 'MANPATH'` # 匹配关键字及下面的一行 ## -A1 匹配下面1行 greo eht1 -A1 filename # 模糊匹配 grep "abc" # 结果为abcd, abcde, abc等 # -w 精确匹配/全匹配 grep -w "abc" # 结果为abc 1.1完全匹配字符串-x # -x 完全匹配字符串 ls /usr/bin/ | grep -x wg

在这里插入图片描述

2.反向匹配grep -v ‘字符串’

与上例子相反,反向匹配

# 匹配文件中不包含 MANPATH 的那一行: ## -v 取反 cat manpath.config| grep -v 'MANPATH'` 不包括grep本身

不包含grep本身

# -v参数含义为不包括(取反) ps aux | grep -v "grep" | grep defunct 3、 grep -E 同时匹配多个关键字–或关系

grep -E 是使用扩展正则表达式 也就是egrep命令

# 匹配 file.txt 中包含 word1 或 word2 或 word3 的行。 ## 满足其中任意条件(word1、word2和word3之一)就会匹配。 ## -E 使用正确表达式 ## |正则表达式中的 或 grep -E "word1|word2|word3" file.txt grep过滤空白行和注释行 # -E使用正则表达式 # -v 取反 ## ^# 以#号开头 ## ^$ 以空开头,以空结尾(空白行) grep -Ev '^#|^$' filename 4、 同时匹配多个关键字–且关系

使用管道符连接多个 grep ,间接实现多个关键字的与关系匹配:

# 必须同时满足三个条件(word1、word2和word3)才匹配 grep word1 file.txt | grep word2 |grep word3 5、显示前几行和后几行 # 查看匹配的关键字前后几行 ## -C3 匹配前后3行 grep -C3 "abc" # 结果为abc的 ## -A 10 显示匹配到的后10行 grep -A 10 file ## -B 5 显示匹配的前5行 grep -B 5 file 6. 只过滤文件名 # 从find的文件名中过滤--推荐 find . | grep 文件名 # grep原生只过滤文件名---很慢 ## -l 只显示符合匹配条件的文件名 grep -l 文件名字符串 文件列表 grep -l main *.c 7. 过滤还有特殊字符的字符串 # 过滤字符串"-c" ## \防止转义 cat test.tx |grep "\-c" 通配符(匹配文件名)

参考: https://abcfy2.gitbooks.io/linux_basic/content/first_sense_for_linux/command_learning/wildcard.html

# 代表任意字符{0到多个} * # 代表一个字符 ? # 中间为字符组合,仅匹配其中任一一个字符 [] # 单个小写字母 [a-z] # 单个大写字母 [A-Z] 常用正则表达式(匹配文件内容)

正则表达式常用于日志分析

^ 表示以指定字符开头 $ 表示以指定字符结尾 . 表示匹配任意一个非空字符 .* 表示匹配任意非空字符(1— N个非空字符) ? 表示可以重复前面指定的字符1此或0次 .? 表示匹配任意两个非空字符 在这里插入图片描述 在这里插入图片描述

grep常用语法

通过模式对文件内容进行查找

查找 例子如下: grep mail /etc/passwd

想知道查找内容是哪一行加-n: grep -n mail /etc/passwd

管道操作符 |

将管道操作符左边命令的输出作为右边命令的输入 cat /etc/passwd | grep root 例如 cat 1.txt | grep 5.6ls -la | grep ^d 指以d开头的字符串 cat /etc/passwd | grep ^r ls -la | gerp [1] 指除了以d开头之外的所有内容grep “张三” filename | grep “李四” 管道符|的优点是可以多级筛选,缩小范围 ls -la | grep ^d 查询当前目录下以d开头的内容 ls -la | grep[2] 查询目录不以d开头的内容

-c 统计复合结果条件的行数

grep -c “INSERT” agilenone.sql 统计agileone中insert有几行

-n 查看行数

grep -n “INSERT” agileone.sql 在显示符合样式的那一行之前,标示出该行的列数编号。 grep ‘^*’ file 查找显示所有以"*"打头的行

-v 看除了insert之外剩余的内容

grep -v “INSERT” agileone.sql 查看除了ls之外(-v)的行。并显示行号(-n)cat /etc/passwd | grep -v -n ls

区分大小写查找

列出大小写都存在的关键字(soup):grep -i soup hello soup是要查找的关键字内容hello是文件 只查看大写的关键字(Soup):grep Soup hello Soup是要查找的大写关键字内容hello是文件

精确查找,例如需要查找483和484这两个数字

grep “48[34]” hello 括号内的关键字会单独和括号前的关键字组合查找得出的结果查找483和484hello是文件

通配符

grep “I…DB*” agileone.sql 寻找以I开头,以DB结尾的内容,然后中间几个点,代表中间省略几个字母grep '" ’ agileone.sql 查询内容为双引号,必须加上转义\


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有