正则表达式和grep、sed工具

what is 正则表达式

一种处理字符的方法,只要命令工具(例:grep、sed、awk等)支持这种方法,就可以用来处理正则表达式字符串。通过特殊字符的帮助,我们就容易达到查找、删除、替换特定字符串的命令程序。

用途

信息过滤,信息匹配,获取有用信息

常用的表达式含义

  • ^ 行首标记  #^haha,匹配以haha起始的行
  • $ 行尾标记
  • . 匹配任意单个字符
  • ? 匹配之前的项一次或0次  #blu?e 匹配blue或ble
  • + 匹配之前的项一次或多次
  • * 匹配之前的项0次或多次
  • [] 匹配包含在[]中的任意一个字符  #a[bc]d 匹配abd或acd
  • [^] 匹配除了[^]以外的任意一个字符  #a[^bc] 匹配ad、ae...
  • [-] 匹配[-]一段字符中的任意一个字符  #[1-9] 匹配1-9任意一个字符
  • () 创建一个用于匹配的子串  #ab(cde)?匹配ab或abcde
  • {n} 匹配之前的项n次  #[1-9]{3}相当于[1-9][1-9][1-9]
  • {n,} 之前的项至少匹配n次
  • {n,m} 之前的项匹配n-m次
  • | 匹配两边的任意一项  #(a | b) 匹配a或b
  • \ 转义
  • [:alnum:] 大小写英文和数字
  • [:alpha:] 大小写英文
  • [:digit:] 数字
  • [:lower:] 小写英文
  • [:upper:] 大写英文
  • [:blank:] TAB或空格
  • [:punct:] 标点符号


grep

grep [-n 行号] [-v 反选] [-A 输出后几行] [-B 输出前几行] [-C 输出前后几行] [-i 忽略大小写] [-o 打印匹配到的而不是整行] [-b 匹配到的字符偏移] [-l 搜索匹配文本在那个文件中] [-L 和-l相反] [-e 匹配多个] [-r或-R 递归搜索,可指定include和exclude] [-q 静默输出成功返回0] [--color=auto 颜色高亮]

  • 对于扩展正则表达式  + ?| () 需要使用grep -E或egrep使用
  • 例:截取dmesg的eth0信息,高亮显示,并显示前两行后三行,显示行号

  • 参数-o

  • 参数-b

  • 参数-l和L

  • 参数-e

  • 参数-r和-R

PS:有时候因为语系的不同,用到类似[a-z]这样的表达式的时候会有错误,编码顺序不同导致的例如zh_CN.big5和C两种语系

  • LANG=C时:01234....ABCD..YZabcd....xyz
  • LANG=zh_CN :01234....aAbBcC....zZ

可用[:lower:]代替



sed:流编辑器 stream editor

     可以对数据进行:插入、删除、替换并打印到屏幕上,或进行直接写入,还可以进行部分数据查找替换、已匹配字符串标记和子串匹配标记

sed [-i 直接写入] [-e 连续操作] [-n 静默模式] ‘ 操作内容 ’

1:新增a,i   删除d   替换c   显示p,-n              //(根据行号)

  • [[email protected] ~]# nl /etc/passwd | sed ‘2a hello‘    // 第二行下面增加

1     root:x:0:0:root:/root:/bin/bash
     2     bin:x:1:1:bin:/bin:/sbin/nologin
hello
     3     daemon:x:2:2:daemon:/sbin:/sbin/nologin

  • [[email protected] ~]# nl /etc/passwd | sed ‘2i hello‘    // 第二行上面增加

1     root:x:0:0:root:/root:/bin/bash
hello
     2     bin:x:1:1:bin:/bin:/sbin/nologin

  • d
  • [[email protected] ~]# nl /etc/passwd | sed ‘2,4d‘    // 删 2-4行   

1     root:x:0:0:root:/root:/bin/bash
     5     lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

  • [[email protected] ~]# nl /etc/passwd | sed ‘2,5c hello‘           // 第2-5 行换掉

1     root:x:0:0:root:/root:/bin/bash
hello
     6     sync:x:5:0:sync:/sbin:/bin/sync

  • [[email protected] ~]# nl /etc/passwd | sed -n ‘2,4p‘               // 显示 2-4 行 ,-n(安静模式)不加输出差别很大

2     bin:x:1:1:bin:/bin:/sbin/nologin
     3     daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4     adm:x:3:4:adm:/var/adm:/sbin/nologin

2:部分数据查找替换

sed ‘s/要替换字段/新字段/g’   # ‘s///ng‘ 每行第n个开始才进行替换

     例如:截取eth0的ip地址

  • [[email protected] ~]# /sbin/ifconfig eth0 | grep ‘inet addr‘ | sed ‘s/^.*addr://g‘ | sed ‘s/Bcast.*$//g‘
    192.168.159.131

和正则表达式结合

3:已匹配字符串标记&

4:字串匹配标记\1\2

格式:‘s/() ()/\1 \2‘

时间: 2024-10-17 14:09:22

正则表达式和grep、sed工具的相关文章

轻松上手 正则表达式与grep,sed,awk(一)

一些废话: 对于正则表达式,一直都是似懂非懂,看到一些代码,脚本中带有正则,awk,sed,心里总有点虚.主要是记不住,平时又没怎么用,也就没总结了.现在有空,决定总结一下,顺便克服一下看到shell,js这些带有正则就心虚的弱点.打算分三篇文章来写 正文: 一般来说,正则分好几种,但基本都差不多,我所了解的有 "基本正则","扩展正则"及"perl正则",本文更偏向说记录"基本正则"和"扩展正则",它们在

正则表达式与grep & sed

一.正则表达式基础 概念:正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 二:grep作业(正则表达式及字符处理)  目标文件/etc/passwd,使用grep命令或egrep 1.显示出所有含有root的行: 2.输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的内容: 3.  显示出有多少行含有nologin. 4.显示出那些行含有root,并将行号一块输出. 5.显示出文件中 6.新建用户   

正则表达式与grep、sed工具使用简介

正则表达式与grep.sed工具使用简介 一.正则表达式     正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑. 其介绍如下:      \ 将下一个字符标记符.或一个向后引用.或一个八进制转义符 ^ 匹配输入字符串的开始位置 $ 匹配输入字符串的结束位置 * 匹配前面的子表达式任意次 + 匹配前面的子表达式一次或多次(大于等于1次) ? 匹配前

linux(5)--补充(管道| / 重定向> / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)

本节中正则表达式的工具程序 grep,sed和awk是重点,也是难点!!! 先补充一下一. 管道| / 重定向> / xargs 如:1. 管道和重定向的区别:具体可以见 http://www.cnblogs.com/chengmo/archive/2010/10/21/1856577.html以此为例: cat test.sh test1.sh 2>/dev/null | grep -n 'echo' 此时若test.sh 不存在,报错信息不会输出到屏幕中,而是转入 /dev/null中,如

Shell脚本 (四)正则表达式 grep sed awk 工具

正则表达式定义正则表达式,又称正规表达式.常规表达式是使用单个字符串来描述.匹配一系列符合某个句法规则的字符串·正则表达式组成普通字符大小写字母.数字.标点符号及一些其他符号元字符在正则表达式中具有特殊意义的专用字符·基础正则表达式示例查找特定字符利用中括号[]来查找集合字符查找行首^与行尾字符$查找任意一个字符.与重复字符查找连续字符范围{}·基础正则表达式的常见元字符^.$...\..[ ].[^ ].[n1-n2].{n}.{n,}.{n,m}·####查找特定字符####n--表示显示行

python 全栈 linux基础 (部分)正则表达式 grep sed

/etc/profile /etc/bashrc  .变量添加到shell环境中,永久生效. /root/.bashrc /root/.bash_profile 正则表达式 定义:正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.(被命令所解释) 三种文本处理工具/命令:grep sed awk grep(过滤) 参数 -n  :显示行号 -o  :只显示匹配的内容 -q  :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容 -l

正则表达式及grep、egrep等工具的使用

一.何为正则表达式 正则表达式是自定义的,linux文本工具(如grep,sed)用来过滤文本的模式模板,linux工具能够在数据流向工具时对数据进行正则表达式模式匹配,数据能匹配模式则会被接受进行下一步处理(如显示.删除.替代等).正则表达式在shell和linux中的地位非常重要,透过正则表达式强大的字符串处理能力,我们可以从大量的数据中快速检索出仅符合需要的数据进行分析,由此给工作带来极大的便利 二.正则表达式的分类 正则表达式包括基本正则表达式(basic regular express

关于 文本处理工具、正则表达式、grep 的简单举例

文本处理工具 抽取文本的工具 文件内容:less和cat 文件截取:head和tail 按列抽取:cut 按关键字抽取:grep 文件查看命令:cat,tac,rev cat [选项] [file] cat -n     对显示出的每一行进行编号 cat -b     非空行编号 cat -ns    连续压缩空行成一行 cat -v     显示回车符 cat -E     显示行结束符$ cat -A     显示所有控制符 tac file   反向显示内容 rev file   反向显示

正则表达式学习之grep,sed和awk

正则表达式是用于描述字符排列和匹配模式的一种语法,它主要用于字符串的模式分割.匹配.查找以及替换操作. 描述一个正则表达式需要字符类.数量限定符.位置限定符.规定一些特殊语法表示字符类,数量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正则表达式. 正则表达式的语法规范如下: 字符类:在模式中表示一个范围,但是取值范围是一类字符中的任意一个. 数量限定符:限定字符类出现的次数. 位置限定符:描述各种字符类和普通字符之间的位置关系. 特殊字符: 正则表达式有两种规范,分别是

20150827-Linux grep文本过滤工具及正则表达式

待完善..... grep: Linux文本处理三剑客: grep: 文本过滤工具: sed:文本编辑器(行):stream editor awk:文本报告生成器:Linux上awk的实现为gawk grep: Global search REgular expression and Print out the line. 作用:文本搜索工具,根据用户指定的"模式(pattern)"逐行去搜索目标文本,打印匹配到的行: 模式:由正则表达式的元字符及文本字符所编写的过滤条件: 元字符:字