grep命令经常使用參数及使用方法
2023-09-11 14:15:01 时间
1、grep介绍
grep命令是Linux系统中一种强大的文本搜索工具,它能使用正則表達式搜索文本。并把匹
配的行打印出来。grep全称Global Regular Expression Print,表示全局正則表達式版本号,它的使用权限是全部用户。
grep可用于shell脚本,由于grep通过返回一个状态值来说明搜索的状态,假设模板搜索成功,则返回0,假设搜索不成功,则返回1,假设搜索的文件不存在,则返回2。
2、grep经常使用參数
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '匹配字符串' 的次数
-i :忽略大写和小写的不同。所以大写和小写视为同样
-n :顺便输出行号
-c :计算找到 '匹配字符串' 的次数
-i :忽略大写和小写的不同。所以大写和小写视为同样
-n :顺便输出行号
-v :反向选择。亦即显示出没有 '搜寻字符串' 内容的那一行!
比方test.txt文件内容例如以下:
1000 20 nan 1001 21 nv 1002 23 Nan//忽略大写和小写进行匹配并显示行号
grep -ni 'nan' test.txt 1:1000 20 nan 3:1002 23 Nan
//忽略大写和小写进行”非“匹配 并显示行号
grep -ni 'nan' test.txt 2:1001 21 nv
3、grep正則表達式
Re | 含义 |
^word | 待匹配的字符串(word)在行首!
|
word$ | 待匹配的字符串(word)在行末! 如:grep 'nv$' test.txt 返回:1001 21 nv |
. | 代表随意一个字符,一定是一个随意字符! 搜寻的字符串能够是 (eve) (eae) (eee) (e e), 但不能仅有(ee) 。亦 即e 与e 中间一定仅有一个字符,而空格符也是字符! 如:grep 'n.n' test.txt 返回:1000 20 nan |
\ | 转义字符,特殊字符如 ' { } 如:grep -n \' test.txt 匹配含有单引號' 的那一行! |
* | 反复零个或多个的前一个RE 字符,注意*号前面一定要有字符 如:grep 'n*' test.txt 返回:1000 20 nan 1001 21 nv 1002 23 Nan |
\{n,m\} | 连续n 到m 个的前一个RE 字符 若为\{n\} 则是连续n 个的前一个RE 字符, 若是\{n,\} 则是连续n 个以上的前一个RE 字符! |
[ ] | 字符集合的RE 特殊字符的符号 [abc]:表示匹配a或者b或者c [a-z]:表示匹配a,b,c,...z这26个字母中不论什么一个 [^a-z]:表示字符串的开头仅仅要不是小写字母a-z。则都能匹配成功 [a-z$]:表示字符串的结尾仅仅要是小写字母a-z。则都能匹配成功 |
扩展的正則表達式:egrep 'pattern' file.txt 或者用 grep -E 'pattern' file.txt
Re | 含义 |
+ | 反复『一个或一个以上』的前一个RE 字符 如:egrep -n 'go+d' regular_express.txt 则:(god) (good) (goood)等会匹配成功 |
? |
『零个或一个』的前一个RE 字符 如:egrep -n 'go?d' regular_express.txt 则:(gd) (god)等会匹配成功 |
| | 用或( or )的方式找出数个字符串 如:egrep -n 'gd|good' regular_express.txt 则:匹配gd 或good 这两个字符串 |
() | 找出『群组』字符串 如:egrep -n 'g(la|oo)d' regular_express.txt 则:匹配(glad) 或(good) 这两个字符串 |
相关文章
- 学习MongoDB 三: MongoDB无法启动的解决方法
- 【翻译自mos文章】使用asmcmd命令在本地和远程 asm 实例之间 拷贝asm file的方法
- 一、查看Linux内核版本命令(两种方法):
- Linux centos 运行telnet命令command not found的解决方法
- 【Vue】错误 : 无法加载文件 C:UsersAdministratorAppDataRoamingnpmvue.ps1,因为在此系统上禁止运行脚本的解决方法
- jQuery中get与eq方法的区别
- 使用pip命令和本地whl安装Python扩展库的方法(以scipy-1.5.4为例,附scipy-1.5.4高速下载链接)
- [转]Docker--查看容器的启动参数(命令)--方法/实例
- nf_conntrack: table full, dropping packet解决方法
- jQuery获取attr()与prop()属性值的方法及区别介绍
- js判断为空Null与字符串为空简写方法
- WebPageBase.IsSectionDefined(String) 方法
- Django 4.x Globalization 全球化使用示例和配置方法
- $.post以后就取不到$(this)节点解决方法【转】
- jquery 保留两个小数的方法
- Mysql数据库中设置root密码的命令及方法
- 浅析Console命令调试常用方法
- 【C#日常】C#泛型集合Dictionary<TKey, TValue>使用方法及泛型集合检查是否存在Key值
- linq判断集合是否为空的方法
- 【UVM实战】第一章:配置UVM环境(以VCS为例),跑通书上的例子(包括清理中间文件方法、使用DVE查看波形方法、命令执行原理探究)
- ffmpeg一些filter使用方法、以及一些功能命令
- 使用fuser命令kill一个终端(特殊文件)的方法
- unix mkdir命令的使用方法
- grep命令參数及使用方法
- alternatives命令使用方法
- 【网摘】批处理中,以管理员方式运行CMD命令的方法
- 程序员最佳学习方法(干货总结)
- CAD怎么输入命令?CAD输入命令方法
- 大数据时代审计技术方法的发展趋势
- jQuery的删除的三种方法remove(),detach(),empty()
- DVWA命令注入(Command_Injection)全等级绕过方法