一、正则表达:

^:以什么什么开头,^a:以a字符开头

$:以什么什么结尾,b$:以b字符结尾

*:左边字符0~无穷个

+:左边字符1~无穷个

.:代表单字符

?:前导字符为零个或1个

{n}:左面字符有n个

{n}$:左面字符n个结尾

{n,m}:左面字符n到m个

{n,}:左面字符n到无穷个

[]:匹配中括号中的限定的1个字符,有特殊符号需要转义字符

[a-z]:a到z中任意单字符

[a-zA-Z]:a到z和A到Z中任意单字符

[a-Z]:就是[a-zA-Z]

[0-9]{t}:0到9中任意t个单字符,也就是[0-9][0-9]

^[0-9]:以0到9中单数字开头

^[^0-9]:除了0到9中单数字开头

二、grep:文本搜索,匹配内容

grep 选项参数 命令

例如:

#grep -n 'root' /etc/passwd     #静默查询/etc/passwd文件中root字符

选项参数:

-n:显示行号

-o:只显示匹配内容

-q:静默匹配不打印内容通过"echo $?"确认执行是否成功

-l:打印文件名

-A 2:打印本行加下2行

-B 3:打印本行加上3行

-C 4:打印本行加上4行加下4行

-i:匹配忽略大小写

-iv:匹配内容取反

-c:统计行数

-w:匹配单词

-E:扩展的grep版本,等同egrep

'abc':匹配单引号中的字符

-e 'abcd' -e 'abce':匹配abcd的单词或者abce的单词

'abc(d|e)':匹配abcd或者abce的单词,同上

三、sed:流处理

sed 选项参数 命令

例如:

#sed -n '3p' test.txt     #静默输出第3行内容,3为定位行位置,p为命令
#sed ‘4a abcd’ test.txt #第4行追加abcd字符,a为命令

其中,

选项参数:

-n:静默处理,不打印输出结果

命令:

p:打印

c:替换行内容

a:追加内容

i:插入内容

1,4d:删除1到4行内容

1d,4d:删除1行和4行内容

d:删除

//:命令中使用正则表达式放入//中

//d:删除正则匹配到的行

s:替换

s/aaa/bbb/g:将全部行中的aaa替换为bbb,不加g则每行只替换第一个aaa

s/()()/\1\2/g:匹配两个括号中的内容,\1\2表示将第一个括号和第二个括号内容显示

例如:

#sed 's/^(.)(.*)$/\2/' test.txt     #test文件中任意行去掉第一个字符,^(.)任意单字符开始,(.*)任意0到无穷字符,\2只显示第二个括号部分

四、应用grep(正则表达式及字符处理)

目标文件:/etc/passwd,使用grep命令或egrep处理

1.显示出所有含有root的行

#egrep 'root' /etc/passwd

2.输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的内容

#egrep -C 2 'bash' /etc/passwd

3.显示出有多少行含有nologin

#egrep -c 'nologin' /etc/passwd

4.显示出那些行含有root,并将行号一块输出

#egrep -n 'root' /etc/passwd

5.-

6.新建用户abominable、abominate、anomie、atomize编写正则表达式,将他们匹配出来

#egrep '^a[a-z]omi[a-z]*' /etc/passwd

7.建5个用户Alex213sb、Wpq2222b、yH438PIG、egon666、egon过滤出用户名组成是字母+数字+字母的行

#egrep '^[a-Z]+[0-9]+[a-Z]+' /etc/passwd

8.显示出/etc目录下所有包含root的文件名

#find /etc |egrep 'root'

9.过滤掉/etc/ssh/sshd_config内所有注释和所有空行

#egrep '^[^\#][.]*' /etc/ssh/sshd_config

五、应用Sed

以/etc/passwd文件为模板

1.删除文件每行的第一个字符

#sed -r 's/(.)(.*)/\2/g' /etc/passwd

2.删除文件每行的第二个字符

#sed -r 's/(.)(.)(.*)/\1\3/g' /etc/passwd

3.删除文件每行的最后一个字符

#sed -r 's/(.*)(.)$/\1/g' /etc/passwd

4.删除文件每行的倒数第二个字符。

#sed -r 's/(.*)(.)(.)$/\1\3/g' /etc/passwd

5.删除文件每行的第二个单词。

#sed -r 's/^([a-Z]*)([^a-Z]*)([a-Z]*)([^a-Z]*)/\1\2\4/g' /etc/passwd

6.删除文件每行的倒数第二个单词。

#sed -r 's/([^a-Z]*)([a-Z]*)([^a-Z]*)([a-Z]*)$/\1\3\4/g' /etc/passwd

7.删除文件每行的最后一个单词。

#sed -r 's/([^a-Z]*)([a-Z]*)$/\1/g' /etc/passwd

8.交换每行的第一个字符和第二个字符。

#sed -r 's/^(.)(.)/\2\1/g' /etc/passwd

9.交换每行的第一个字符和第二个单词。*

#sed -r 's/^(.)([a-Z]*)([^a-Z]*)([a-Z]*)([^a-Z]*)/\4\2\3\1\5/g' /etc/passwd

10.交换每行的第一个单词和最后一个单词。*

#sed -r 's/^([a-Z]*)([^a-Z]*)(^[a-Z]*)([a-Z])$/\3\2\1/g' /etc/passwd

11.删除一个文件中所有的数字。

#sed -r 's/[0-9]//g' /etc/passwd

12.删除每行开头的所有空格。

#sed -r 's/^[ ]*//g' /etc/passwd

13.用制表符替换文件中出现的所有空格。

#sed -r 's/[ ]/\t/g' /etc/passwd

14.把所有大写字母用括号()括起来。

#sed -r 's/[A-Z]/(&)/g' /etc/passwd

15.打印每行3次。

#sed -r '{p;p}' /etc/passwd

16.只显示每行的第一个单词。

#sed -r 's/^([][ ]*)([a-Z]*)(.*)/\2/g' /etc/passwd

17.打印每行的第一个单词和第三个单词。

#sed -r 's/^([ ]*)([a-Z]*)([^a-Z]*)([a-Z]*)([^a-Z]*)([a-Z]*)(.*)/\2\6/g' /etc/passwd

18.用命令获取格式为 mm/yy/dd 的日期格式,结合管道,将其换成 mm;yy;dd格式

#date ‘+%m/%y/%m’ | sed -r 's/[/]/;/g'

正则表达式 grep文本查询 sed流处理 应用的更多相关文章

  1. Linux基础正则表达式:grep,sed

    先说明语系对正则表达式的影响    LANG=C:0,1,2,3,4...A,B,C,D...Z a b c d ... z    LANG=zh_CN:0,1,2,3,4...a A b B c C ...

  2. centos 正则,grep,egrep,流式编辑器 sed,awk -F 多个分隔符 通配符 特殊符号. * + ? 总结 问加星 cat -n nl 输出文件内容并加上行号 alias放~/.bash_profile 2015-4-10 第十三节课

    centos 正则,grep,egrep,流式编辑器 sed,awk -F 多个分隔符  通配符 特殊符号. * + ? 总结  问加星 cat -n  nl  输出文件内容并加上行号 alias放~ ...

  3. shell脚本之正则表达和文本处理(文本处理三剑客:1、grep 2、sed 3、awk)

    文本处理三剑客:1.grep  2.sed  3.awk 一.grep:(过滤) grep的使用,主要的参数有: -n  :显示行号:-o  :只显示匹配的内容-q  :静默模式,没有任何输出,得用e ...

  4. Linux正则表达式,grep总结,sed用法

    原文: 1.sed   流编辑器,实现对文字的增删改替换查(过滤.取行),能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件 输入到屏幕,可以把只匹配到模式的内容输入到屏幕上.还可以对原文件 ...

  5. Linux正则表达式grep与egrep

    grep -io "http:/=[A-Z0-9]\{16\}" ./wsxf.txt >wsxf_urls.txt Linux正则表达式grep与egrep 正则表达式:它 ...

  6. grep与正则表达式,grep、egrep和fgrep

    grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串. ...

  7. shell:正则表达式和文本处理器

    1.什么是正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 生活中处处都是正则: 比如我们描述:4条腿 你可能会想 ...

  8. Shell第二篇:正则表达式和文本处理工具

    一 什么是正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 生活中处处都是正则:     比如我们描述:4条腿   ...

  9. BASH 正则表达式和文本处理工具

    本节内容 1.  什么是正则 2.  grep 3.  sed 4.  awk 5.  其他补充 一  什么是正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方 ...

随机推荐

  1. Alpha阶段敏捷冲刺⑧

    1.提供当天站立式会议照片一张. 每个人的工作 (有work item 的ID),并将其记录在码云项目管理中: 昨天已完成的工作. 报表能和账单数据结合起来 工作中遇到的困难. 后端和程序的交互还是没 ...

  2. SQL Server 中几个有用的特殊函数

    在SQL Server 的使用过程中,发现几个很有用,但不太常用(或细节不太清楚)的函数(存储过程): isnumeric,isdate,patindex,newid,collate,sp_execu ...

  3. 【Web Shell】- 技术剖析中国菜刀 - Part II

    在第一部分,简单描述了中国菜刀的基本功能.本文我将剖析中国菜刀的平台多功能性.传输机制.交互模式和检测.我希望通过我的讲解,您能够根据您的环境检测出并清除它. 平台 那么中国菜刀可以在哪些平台上运行? ...

  4. [转帖]TLS 1.3概述

    TLS 1.3概述 http://www.inforsec.org/wp/?p=1960   By Yanting Yang | 四月 26, 2017| SecComm 作者:李新宇 中科院软件所 ...

  5. nginx通过配置empty_gif解决请求favicon 404的问题

    背景介绍 因为一些浏览器在访问网站时会默认去请求网站的favicon,但是我的网站(Tengine)上并没有这些icon图片,因此在访问日志里会出现大量的404错误,会触发一些没必要日志告警.我们可以 ...

  6. QString,string,char* 在utf8和gbk不同编码下的相互转化

    关于编码简介:ascii编码是最开始的编码规则本,里面只收纳了英文.特殊字符.数字等有限字符,采用的是8位一个字节的方式进行编码对照:unicode在ascii码的基础上进行了升级扩展,立志将全世界所 ...

  7. idea的protobuf使用

    1.安装插件 2.添加依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&qu ...

  8. Xcode一个project生成多个App

    网上有很多奇奇怪怪的复杂的方案,其实误导了,方法很简单: 打开项目属性 修改Bundle Identifiler 随便生成了四个App,如下所示:

  9. Satisfiability of Equality Equations - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Satisfiability of Equality Equations - LeetCode 注意点 必须要初始化pre 解法 解法一:典型的并查集算法 ...

  10. BZOJ4416 [Shoi2013]阶乘字符串 【序列自动机 + 状压dp】

    题目链接 BZOJ4416 题解 建立序列自动机,即预处理数组\(nxt[i][j]\)表示\(i\)位置之后下一个\(j\)出现的位置 设\(f[i]\)表示合法字符集合为\(i\)的最短前缀,枚举 ...