linux 文本处理(grep、sed、awk)

grep 文本过滤工具 不改变文本原内容

sed 文本修改工具

awk 把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

#正则表达式

# 正则表达式:{Regualr (有规律的)Expression(表现)正则表达式}, 简写:REGEXP-->RE
正则表达式就是能用某种模式去匹配一类字符串的公式,它是由一串字符
和元字符构成的字符串。
所谓元字符,就是用以阐述字符表达式的内容、转换和描述各种操作信息
的字符。
正则表达式针对的是文本内容,而通配符针对的是文件名称。
分两类:
基本正则表达式:BRE
扩展正则表达式:ERE

grep 文本过滤工具 不改变文本原内容

sed 文本修改工具

awk 把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

正则表达式引擎(httpd,nginx都有使用pcre支持正则表达式)

正则表达式就是能用某种模式去匹配一类字符串的公式,它是由一串字符
和元字符构成的字符串。所谓元字符,就是用以阐述字符表达式的内容、
转换和描述各种操作信息的字符。
正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
简单的说,正则表示式就是处理字符串的方法,它是以行为单位来进行字
符串的处理行为, 正则表示式通过一些特殊符号的辅助,可以让使用者轻
易的达到搜寻/删除/取代某特定字符串的处理程序。
vim、grep、find、awk、sed等命令都支持正则表达式。
 
拓展的正则表达: egrep 或者 grep -E ,使用egrep的时候,就无需再加
转义符了。
fgrep : 不支持正则表达式


grep作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本
逐行进行匹配检查;打印匹配到的行;
模式:由正则表达式的元字符及文本字符所编写出的过滤条件;

总结:
1)字符匹配
. :匹配单个字符
[ ]:匹配范围内的任意单个字符
2)匹配次数
\?:匹配前面的字符0次或一次,意味着可有可无;
*:匹配前面的字符0次或任意次
.*:匹配任意长度的任意字符
\+:匹配前面的字符1次或任意次,意味着至少一次
\{n\}:匹配其前面的字符n次;
\{n,m\}:匹配其前面的字符至少n次,至多m次;
\{0,n\}:匹配前面的字符至多n次
\{m,\}:至少m次


3)位置限定
 ^:行首锚定;用于模式的最左侧;
$:行尾锚定;用于模式的最右侧;
^PATTERN$:用于PATTERN来匹配整行;
^$:空白行;
\< 或 \b:词首锚定,用于单词模式的左侧;
\> 或 \b:词尾锚定,用于单词模式的右侧;
\<PATTERN\>:匹配完整单词;
4)其他及特殊的POSIX字符
\w:匹配字母、数字和下划线等于[A-Za-z0-9]
\W:匹配非字母、非数字和非下划线[^A-Za-z0-9]
\n:匹配一个换行符
\r:匹配一个回车符
\t:匹配一个制表符
\s:匹配任何空白字符
\S:匹配任何非空白字符
\f:匹配一个换页符
[[:alnum:]] 文字数字字符(除去符号之外,数字、字母都可以包括中
文!)
[[:alpha:]] 文字字符(字母,包括中文)
[[:digit:]] 数字字符(阿拉伯数字)
[[:graph:]] 非空字符(排除空格、tab键)
[[:print:]] 非空字符(包括空格,空格认为非空,tab键不适用)
[[:lower:]] 小写字符
[[:upper:]] 大写字符
[[:cntrl:]] 控制字符
[[:punct:]] 标点,符号(包括常用符号)
[[:space:]] 所有空白字符(新行,空格,制表符)
[[:xdigit:]] 十六进制数(0-9,a-f,A-F)
练习:
good good study day day up
10086
10086+1
I remember that day she got married
三个空格
 三个tab建
Good afternoon everyone
you are a good man
Study hard for your future
How are you?
yuwenkedaibiao
I'm fine,thanks
go TO bed
are you ok?
It's been a long day without you my friend
You jump ,I jump!
one day ,'your girl will go '. Just because you have noting.
"you cried to me,'fairy tales are deceptive'"
\\\\\
//
()()()()()
"how do you do"
1)搜索含有thanks的行。
2)搜索以Good开头的行。
3)搜索一个包含od的行,d字母可有可无,不限次数。
4)搜索一个词,该词以y或Y开头。
5)搜素含有单引号的行。
6)搜索一些行,该行包括某个单词,并满足一下条件:
第一个字符可以是Y或y
第二个字符可以是o或者没有
第三个字符可以是任意字符
第四个字符匹配前一个字符,0次或任意次
7)匹配以大写字母开头的行
8)匹配包含数字的行。
[root@localhost ~]# grep "thanks" mytest.txt
I'm fine,thanks
[root@localhost ~]# grep "^Good" mytest.txt
Good afternoon everyone
[root@localhost ~]# grep "od*" mytest.txt
[root@localhost ~]# grep "^[Yy].*" mytest.txt
[root@localhost ~]# grep ".*'.*'.*" mytest.txt
[root@localhost ~]# grep "^[Yy]o\?.*" mytest.txt
You jump ,I jump!
[root@localhost ~]# grep ^[[:upper:]] mytest.txt
9)搜索精确匹配到含有day的单词的行。
10)搜索包含are you ok这一行
11)搜索以字母g开头包含两个o以上的单词
12)使用扩展正则表达式,搜索g和d之间至少有一个o的行
13)搜索++++++++的行
14)搜索\\或者的行
15)搜索带有单引号的行
16)搜索带有双引号的行
17)搜索双引号里带有单引号的行
[root@localhost ~]# grep [[:digit:]] mytest.txt
[root@localhost ~]# grep "\<day\>" mytest.txt
[root@localhost ~]# grep "are you ok" mytest.txt
are you ok?
[root@base ~]# grep "\b^go\{2,\}" mytest.t

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值