正则表达式的简单用法以及管道和重定向

前端之家收集整理的这篇文章主要介绍了正则表达式的简单用法以及管道和重定向前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

正则表达式(RegularEXPression,简单的来说,就是用一些符合某种语法规则的字符串来实现其检索的功能。我们这里以grep为例,来学习正则表达式:

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

grep用法

grep[options]PATTERN[FILE...]

options

-i:忽略字符大小写

--color:匹配的字符显示颜色例:aliasgrep=grep--color)

-v显示没有被模式匹配到的行

-o:只显示被模式匹配到的字符串

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

-A显示匹配文件后边的两行

-B显示匹配文件前边的两行

-C:匹配文件前后两行的内容显示

正则表达式:

基本正则表达式

扩展正则表达式

(其匹配次数处于贪婪模式,即尽可能长的匹配。)

基本正则表达式

元字符

.:匹配任意单个字符

#grep'root.'a.txt-->显示a.txt文件中含有root并且其后面跟了任意字符的行

*:匹配其前面的字符任意次(可以为0次)

a*b-->babaabaaab

#grep'a*b'test.txt

.*:匹配任意长度的任意字符

a.*b:ab,aab,amnb.-->(文件中含有以a开头b结尾的行)

\?:匹配器前面的字符1次或0次(部分匹配就行)

\{m,n\}:匹配其前面的字符至少m次,至多n.(修饰第一个\前面的字符)

#grep'a\{1,3\}b'test.txt-->匹配a至少一次至多3

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

[0-9]:0-9中的任意一个数字

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

[^[0-9]]:0-9的任意一个字符

字符集合

[:space:]:空白字符

[:punct:]标点符号

[:lower:]:小写字母

[:upper:]:大写字母

[:alpha:]:大小写字母

[:digit:]:数字

[:alnum:]:数字和大小写字母

位置的锚定:

^:锚定行首,此字符后的任意内容必须出现在行首

grep"^root"/etc/passwd-->/etc/passwd文件中以root为行首的行

$:锚定行尾,此字符前的任意内容必须出现在行尾

bash$-->bash为行尾的行

^$:空白行

\<\b:锚定词首,其后面的任意字符必须作为单词首部出现

\<abab-->abab后边还有字符,一般用于规定某个字符串不处于行尾

\>\b:锚定词尾,其前面的任意字符必须作为单词的尾部出现(用法同上)

分组:\(\)

\(ab\)*ab可以出现任意次或0次。(将ab看成一个整体)

后向引用:后边可以调用前边出现的字符串

\(\)...\1..\2..\3

\n:第n个左括号以及与之对应的右括号所包括的所有内容

#grep'^\([0-9]\).*\1$'/etc/inittab

-->/etc/inittab文件中,以一个数字开头并以同样的数字结尾的行

扩展正则表达式

用法grep-E或者egrep

字符、次数匹配

.[][^]*(同基本正则表达式)

?:匹配其前的字符次或0次;

+:匹配其前的字符至少一次;相当于\(\)

{m,n}:匹配其前的字符至少m次,至多n次;相当于\{m,n}\

位置锚定与基本正则表达式相同,即

^$\<\>

分组:()相当于\(\)

同样支持后向引用:

()...\1...\2...\3...

管道和重定向

重定向

>输出重定向(覆盖输出

ls/var>/tmp/var

>>:追加输出(不覆盖)

set-C禁止对已存在文件使用覆盖重定向

>|:强制覆盖输出

set+C:若文件存在,覆盖重定向

2>重定向错误输出

2>>:追加显示错误输出

&>重定向标准输出错误输出至同一文件。(覆盖)

ls/varr>/tmp/var3.out2>/tmp/var3.out

ls/var&>/tmp/var3.out

<:输入重定向 tr'a-z''A-Z'</etc/fstab

<<:在此处生成文档

cat<<EOF/END<<后边的是在此处结束文档)

cat>>/tmp/myfile.txt<<EOF

管道:前一个命令的输出,作为后一个命令的输入

命令1|命令2|命令3|...

#ls/var|tr'a-z''A-Z'-->/var文件里的小写字母转换成大写字母

(组合小命令完成复杂任务)

补充

tee:从标准输入读取命令,标准输出显示器和保存文件中。

echo"ha"|tee/var/ha.out)

或者

|or

'(C|c)at'-->匹配Catcat

grep支持正则表达式

egrep支持扩展正则表达式

fgrep不支持正则表达式(快速查找)

猜你在找的正则表达式相关文章