加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式中grep,sed的用法(包括基本的正则表达式和扩展的正则

发布时间:2020-12-14 02:26:46 所属栏目:百科 来源:网络整理
导读:一正则表达式 BasicREGEXP:基本正则表达式 ExtendedREGEXP:扩展正则表达式 (正则表达式是使得计算机变成智能化的重要途径) 1.1基本正则表达式 .:表示匹配任意单个字符 []:匹配指定范围内的任意单个字符 [^]:匹配指定范围外的任意单个字符 字符匹配 *:

一正则表达式

  1. BasicREGEXP:基本正则表达式

  2. ExtendedREGEXP:扩展正则表达式

  3. (正则表达式是使得计算机变成智能化的重要途径)

1.1基本正则表达式

  1. .:表示匹配任意单个字符

  2. []:匹配指定范围内的任意单个字符

  3. [^]:匹配指定范围外的任意单个字符

  4. 字符匹配

  5. *:匹配其前面的字符任意次

  6. ?:其前的字符是可有可无的

  7. {m,n}:匹配其前的字符至少m次,至多n次

  8. {0,n}:匹配其前的字符少为0次,至多n次

  9. {m,}:匹配其前的字符至少m次,没有上限

  10. .*:匹配其前面的任意长度的任意字符

  11. 位置锚定锚定:

  12. ^:锚定行首

  13. $:锚定行尾

  14. <,b:锚定词首

  15. >,b:锚定词尾

  16. ():锚定分组

  17. 1,2,3,...:后向引用

  18. grep:使用基本正则表达式定义的模式来过滤文本的命令;

  19. -E:使用扩展的正则表达式

  20. -i:忽略字符大小写

  21. -v:匹配到的字符串不显示

  22. -o:只显示匹配到的字符串

  23. --color:显示匹配到的颜色

  24. -A#:显示匹配到的行及其后的行eg:grep--color-A2'^coreid'/proc/cpuinfo显示coreid行及其后面的两行

  25. -B#:显示匹配到的行及其前的行eg:grep--color-A2'^coreid'/proc/cpuinfo显示coreid行及其前面的两行

  26. -C#:显示匹配到的行及其前后的行eg:grep--color-C2'^coreid'/proc/cpuinfo上下都两行,表示上下文

1.2扩展正则表达式

  1. 字符匹配:

  2. .:表示匹任意单个字符

  3. []:匹配指定范围内的任意单个字符

  4. [^]:匹配指定范围外的任意单个字符

  5. 次数匹配:

  6. *:匹配其前面的字符任意次

  7. ?:匹配其前的字符是可有可无的

  8. +:匹配其前面的字符至少一次

  9. {m,n}:匹配其前的字符至少m次,至多n次

  10. 位置锚定:

  11. ^:锚定行首

  12. $:锚定行尾

  13. <,b:锚定词首

  14. >,b:锚定词尾

  15. 分组:(扩展正则表达式中才真正实现分组的意义)

  16. ():分组

  17. 1,...

  18. 扩展正则表达式还支持一个特殊的字符:或者

  19. |:or

  20. C|cat:表示C或categ:grep--color-E'C|cat'test1.txt

  21. (C|c)at:表示Cat或categ:grep--color-E'(C|c)at'test1.txt

  22. eg:grep--color-E'^[[:space:]]+'/boot/grub/grub.conf引用至少一次空白字符开头的行

  23. grep-E=egrep(二者表达的意义相同)

1.3实例分析

  1. 找出/boot/grub/brug.conf文件中的1-255之间的数字

  2. eg:egrep--color'<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])>'/boot/grub/brug.conf

  3. eg:ifconfig|egrep--color'(<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])>.){3}<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])>'

  4. eg:ifconfig|egrep'<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])>.<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])>.<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])>.<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])>'

  5. 找出ifconfig命令中1-255之间的数字执行结果的IP地址

  6. eg:ifconfig|egrep--color'(<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])>.){3}<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])>'

  7. eg:ifconfig|egrep-o'(<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])>.){3}<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])>'只显示匹配到的串本身

  8. 精确找出ifconfig命令中1-255之间的数字执行结果中的IP地址

  9. eg:egrep--color'<([1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3]>(.<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])>){2}.<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5)>'

  10. IPv4:(A,B,C,D,E)

  11. A:1-127

  12. B:128-191

  13. C:192-223

  14. fgrep(fastgrep快速搜索grep):不支持正则表达式

二sed的基本用法

2.1sed:StreamEDitor行编辑器,只适合编辑纯ASSIC码的文本,实现逐行处理文本(全屏编辑器:vi)

  1. sed:模式空间(内存空间)

  2. 默认不编辑原文件,仅对模式空间中的数据做处理;而后,处理结束后,将模式空间打印至屏幕;

  3. sed[options]’AddressCommand'file...对这个或这些文件当中的符合这个地址指定范围内行执行以上编辑命令

  4. -n:静默模式,不再默认显示模式空间中的内容

  5. -eSCRIPT-eSCRIPT:可以同时指定多个脚本

  6. -i:直接修改原文件

  7. -f/PATH/TO/SED_SCRIPT

  8. sed-f/path/to/scriptsfile

  9. -r:表示使用扩展正则表达式

  10. eg:history|sed's#[[:space:]]##g'查找空白字符替换成什么也没有,删除空白字符

  11. eg:histpry|sed'S#[[:space:]]##g'查找空白字符,把空白字符替换成什么也没有

  12. eg:history|sed's#^[[:space:]]##g'查找行首的空白字符,把行首的空白字符替换成什么也没有

  13. eg:history|sed's#^[[:space:]]*##g'|cut-d''f1查找行首的空白字符,把行首的空白字符替换成什么也没有

2.2Address(地址指令方法)

  1. 1、StartLine,EndLine(从起始行到结束行用“,"隔开)

  2. 比如1,1001到100行

  3. $:倒数第一行

  4. $-1:倒数第二行

  5. 2、/RegExp/使用正则表达式指定模式

  6. eg:/^root/以root字符串开头的行

  7. 3、/pattern1/,/pattern2/

  8. 第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行

  9. 4、LineNumber

  10. 指定的行(精确到某行)

  11. 5、StartLine,+N

  12. 从StartLine(指定的行)开始,向后的N行

  13. 2.3Command

  14. d:删除符合条件的行

  15. eg:sed‘1d'/etc/fstab只删除第1行

  16. eg:sed‘1,2d'/etc/fstab删除第1,2行

  17. eg:sed‘1,$-1d'/etc/fstab删除第1行到倒数第2行

  18. eg:sed‘1,+2d'/etc/fstab删除3行

  19. eg:sed‘/oot/d'/etc/fstab删除指定文件中包含oot的行

  20. eg:sed'/^//d'/etc/fstab删除文件中以”/"开头的行

  21. p:显示符合条件的

  22. eg:sed'/^//p'/etc/fstab显示文件中以”/"开头的行

  23. astring:在指定的行后面追加新行,内容为string

  24. eg:sed'/^//a#helloword'/etc/fstab

  25. n:可用于换行

  26. eg:sed'/^//a#hellowordn#hello,linux'/etc/fstab

  27. istring:在指定的行前面添加新行,内容为string

  28. rFILE:将指定的文件的内容添加至符合条件的行数

  29. eg:sed'2r/etc/issue'/etc/fstab把文件内容添加到第二行

  30. eg:sed'1,2r/etc/issue'/etc/fstab把文件内容添加到第一行和第二行后面

  31. wFILE:将地址指定的范围内的行另存至指定的文件中

  32. eg:sed'/oot/w/tmp/oot.txt'/etc/fstab把oot保存至tmp文件下

  33. s/pattern/string/修饰符:查找并替换,默认只替换每行中第一次被模式匹配到的字符串

  34. eg:sed’s/oot/OOT'/etc/fstab把指定文件中的oot换成OOT

  35. 如果想每一行当中所有出现过的都替换要加修饰符;

  36. 加修饰符

  37. g:全局替换

  38. i:忽略字符大小写

  39. s///:s###,s@@@

  40. (),1,2

  41. &:引用模式匹配到的整个串

  42. eg:sed's@/@#@g'/etc/fstab

  43. eg:nanosed.txt

  44. hello,like

  45. hi,mylove.

  46. sed's#l..e#&r#g'sed.txt把以l开头e结尾的字符串后面加上r或写为sed's#(l..e)#lr#g'sed.txt

  47. sed's#l(..e)#Ll#g'sed.txt把l..e中的l换成L

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读