linux grep
2022/9/15 5:17:27
本文主要是介绍linux grep,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- linux grep
- 参数总结
- 正则表达式汇总
- 实例
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的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法