ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux grep

2022-09-14 12:34:13  阅读:201  来源: 互联网

标签:字符 匹配 -- 样式 linux grep txt


目录

linux grep

参数总结

-a2						显示当前和前后两行的数据
-A<显示行数>或--after-context=<显示行数>		显示当前和后面两行的数据
-b2或--byte-offset				标示出该行第一个字符的编号,并且打印前后两行
-B<显示行数> 或 --before-context=<显示行数>	显示当前和前面两行的数据
-c 或 --count					计算符合样式的列数。
-C<显示行数> 或 --context=<显示行数>或-<显示行数>	除了显示符合样式的那一行之外,并显示该行之前后的内容
-d <动作> 或 --directories=<动作>			当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作
-e<范本样式> 或 --regexp=<范本样式>		指定字符串做为查找文件内容的样式。
-E 或 --extended-regexp				将样式为延伸的正则表达式来使用。
-f<规则文件> 或 --file=<规则文件>			指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F 或 --fixed-regexp				将样式视为固定字符串的列表。
-G 或 --basic-regexp				将样式视为普通的表示法来使用。
-h 或 --no-filename				在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H 或 --with-filename				在显示符合样式的那一行之前,表示该行所属的文件名称。
-i 或 --ignore-case				忽略字符大小写的差别。
-l 或 --file-with-matches			列出文件内容符合指定的样式的文件名称。
-L 或 --files-without-match			列出文件内容不符合指定的样式的文件名称。
-n 或 --line-number				在显示符合样式的那一行之前,标示出该行的列数编号。
-o 或 --only-matching				只显示匹配PATTERN 部分。仅显示匹配到目标字符串
-q 或 --quiet或–silent				不显示任何信息。
-r 或 --recursive				此参数的效果和指定"-d recurse"参数相同
-s 或 --no-messages				不显示错误信息
-v 或 --invert-match				显示不包含匹配文本的所有行
-V 或 --version					显示版本信息。
-w 或 --word-regexp				只显示全字符合的列
-x --line-regexp				只显示全列符合的列
-y						此参数的效果和指定"-i"参数相同

正则表达式汇总

^		用于模式最左侧,如 “^yu” 即匹配以yu开头的单词
$		用于模式最右侧,如 “yu$” 即匹配以yu结尾的单词
^$		组合符,表示空行
.		匹配任意一个且只有一个字符,不能匹配空行
| 		转义字符	
*		重匹配前一个字符连续出现0次或1次以上
.*		匹配任意字符
^.*		组合符,匹配任意多个字符开头的内容
.*$		组合符,匹配任意多个字符结尾的内容
[abc]		匹配 [] 内集合中的任意一个字符,a或b或c,也可以写成 [ac]
[^abc]		匹配除了 ^后面的任意一个字符,a或b或c,[]内 ^ 表示取反操作
+		表示匹配前一个字符一次或多次
?		表示匹配前一个字符0次或1次
()		将一个或多个字符捆绑在一起,当作整体进行处理
{n,m}		匹配目标字符,最少n次,最多m次
>		匹配位于 目标字符开头的字符串,即截止到 < 前面的字符为止,精确匹配
<		匹配位于 目标字符结尾的字符串,即截止到 > 前面的字符为止,精确匹配
[a-z]		匹配所有小写单个字母
[A-Z]		匹配所有大写单个字母
[a-zA-Z]	匹配所有单个大小写字母
[0-9]		匹配所有单个数字
[0-9a-zA-Z]	匹配所有数字和字母

实例

//筛选前一个字符包含e的的文本行
grep -E 'e+' names.txt

//筛选前一个字符包含he的出现0次或者1次的文本行
grep -E 'he?' names.txt

//找出文本中包含 “hi” 或 “java” 的文本行
grep -E -i 'hi|java' names.txt

//找出文本中包含 good和glad的文本
grep -E 'g(oo|la)d' test1.txt

//找出文本中的 o 字符出现的次数最少2次,最多7次的文本行
grep -E 'o{2,7}' test1.txt

//找出文本中的 o 字符出现的次数最少3次
grep -E 'o{3,}' test1.txt

//找出文本中root用户和zcy用户
//如果像下面这样直接使用grep命令查找,可以看到zcy这个字符串开头的账户有多个,显然不符合预期
grep -E '^(root|zcy)' pwd.txt

//这就需要使用到 > 这个表达式了,改进之后,再次执行就符合预期的目标了
//这样root1 root2 zcy2这样的就不会被筛选出来了
grep -E '^(root|zcy)\>' pwd.txt

//匹配zcy这个账户,匹配结果最多展示2条
grep -m 2 '^zcy' pwd.txt

//匹配多文件下,存在某个字符串的内容
grep "zcy" ./f1/pwd.txt ./f2/word.txt

//找出系统密码中那些仅包含2位数或者3位数的内容
grep -n -E "\<[0,9]{2,3}\>" ./pwd.txt

//匹配那些以大写字母开头的行
grep -n -E "^[A-Z]" names.txt

//从多个账户中匹配出任意一个符合要求的
grep -n -E "^(root|zcy|nobidy)\>" ./pwd.txt

标签:字符,匹配,--,样式,linux,grep,txt
来源: https://www.cnblogs.com/liwenchao1995/p/16692597.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有