linux三剑客---grep,sed,awk与正则表达式
Posted XQR
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux三剑客---grep,sed,awk与正则表达式相关的知识,希望对你有一定的参考价值。
grep命令:
grep全称:Global Regular Expression Print,即全面搜索正则表达式并把行打印出来,通过参数-E可以使用egrep的功能
grep与egrep的区别:在于grep只支持基础正则表达式,而egrep可以支持扩展的正则表达式
常用用法:
[[email protected] ~]# grep [-acinv] [--color=auto] ‘搜寻字符串‘ filename 选项与参数: -a :将 binary 文件以 text 文件的方式搜寻数据 -c :计算找到 ‘搜寻字符串‘ 的次数 -i :忽略大小写的不同,所以大小写视为相同 -n :顺便输出行号 -v :反向选择,亦即显示出没有 ‘搜寻字符串‘ 内容的那一行! --color=auto :可以将找到的关键词部分加上颜色的显示喔!
高级参数:
-A:后面加数字,为after的意思,除了列出该行外,后续的n行也列出来 -B:后面加数字,为befer的意思,除了列出该行外,前面的n行也列出来 --color=auto:可将正确的那个选取数据列出颜色 例:[[email protected] tmp]# grep -A2 -B2 "this" regular_express.txt apple is my favorite foody Football agame is not use feet only this dress doesn‘t fit me. go!go!let‘s go!!! 42500000491
正则表达式:
简单来说,正则表达式就是处理字符串的方法,以行为单位来进行字符串的处理行为;正则表达式通过一些特殊符号的辅助,让用户可以轻易达到查找,删除,替换某特定字符串的处理程序
^word | 搜索以word为行首的那一行 |
word$ | 搜索以word为行尾的一行 |
. |
代表且只能代表任意一个字符 |
\ |
转义符号 |
* | 表示重复0个或多个前面的字符(linux其他地方表示所有,例*.php,表示所有后缀名为php的文件) |
.* |
匹配所有字符 |
^.* |
以任意字符开头的内容 |
[word] | 匹配word中任意一个字符存在的行 |
[^word] |
匹配不包含^后任意字符的所有内容 |
\{n,m\} | 匹配前一个字符重复次数n到m次的前一行【\为转义符号,如果用egrep可以去掉斜线】 |
\{n,\} | 匹配前一个字符重复次数至少n次的前一行 |
\{n\} | 匹配前一个字符重复次数为n次的那一行 |
例1: [[email protected] tmp]# grep "^th" regular_express.txt this dress doesn‘t fit me. 例2: [[email protected] tmp]# grep "y$" regular_express.txt "open source" is a good mechanism to devolop programsy apple is my favorite foody 例3: [[email protected] tmp]# grep "425.0" regular_express.txt 42500000491 425000491 例4: [[email protected] tmp]# grep "\." regular_express.txt this dress doesn‘t fit me.【如果只是“.”,将会匹配全部】 例5: [[email protected] tmp]# grep "4250*49" regular_express.txt 42500000491 425491 425000491 例6: [[email protected] tmp]# grep [aeo] regular_express.txt "open source" is a good mechanism to devolop programsy apple is my favorite foody Football agame is not use feet only this dress doesn‘t fit me. go!go!let‘s go!!! 例7: [[email protected] tmp]# grep ‘0\{3,\}‘ regular_express.txt 42500000491 425000491
扩展的正则表达式
+ |
表示重复一个或多个前面的字符 |
? | 0个或1个字符 |
| |
用或的方式查找多个符合的字符串 |
() | 找出”组”字符串(例如找出glad或glod两个字符串,grep ‘g(la|lo)d‘ regular_express |
()+ | d多个重复组的判别 |
以上是关于linux三剑客---grep,sed,awk与正则表达式的主要内容,如果未能解决你的问题,请参考以下文章