Linux正则表达式初入门

了解Linux正则表达式之前,需要了解Linux中通配符和正则的区别:通配符主要用于bash环境,而正则大多数用于Linux三剑客(grep、sed、awk)等中…且Linux中的正则又和其他开发环境下的正则有所区别,咱们暂时研究的还只是Linux环境下的正则…

通配符基础

通配符   描述   示例  
*   任意多个字符   find . *.sh  
  代表任意一个字符   find . ?.sh  
  连续不同命令分隔   ls m1;ls m2  
#   配置文件注释   ####crontab####  
|   管道符   find . -type f -name "*.txt" | xargs rm -f  
~   用户的家目录   oldboy~  
-   上一次操作目录   su -  
$   变量符号   $PATH     
/     /  
>   重定向   echo “linux”>oldboy.sh  
>>   追加重定向   echo “linux”>>oldboy.sh  
<   输入   xargs –n 2 <oldboy.txt  
<<   输入重定向   xargs –n 2 <<oldboy.txt  
  单引号所见即所得   echo ‘date’==>date  
  双引号变量置换  

echo “date”==>date

num=3
echo “$num”==>3 

 
`   相当于$()  

ls  ==>oldboy.sh
echo `ls`==>oldboy.sh

 

 
{]   内容序列   touch m{1..10}
cp file{,.bak}
 
!   取反   find .  -type f ! -name  "*.sh"  
&&   并且   &&  
||   或者   ||  

正则表达式基础组成

正则表达式   描述   示例  
^   匹配行首   ^abc  匹配以abc开头的行   
$   匹配结尾   def$  匹配以def结尾的行  
.   任意一个字符   a.c  匹配abc、adc等  
\   转义字符,还原字符本身含义   \.  代表点本身  
*   重复0个或者多个前一个字符   o*  代表0个o或者多个o  
.*   任意字符   ^.* 代表以任意字符开头  
[abc]   匹配字符集合里的任意一个字符   [a-z][A-Z][0-9] 任意a-z,A-Z,0-9  
[^abc]   匹配不包含^后的所有字符   [^abc]  不包含abc的所有字符  
a\{n,m\}
a\{n,\}
a\{n\}
  匹配重复n到m次a字符
重复至少n次
只重复n次
  0\{0,3\} 0重复了0-3次
0\{3,\}重复至少3次0
0\{3\}只重复3次0
 
()   创建一个用于匹配的子串   ma(tri)?匹配max或maxtrix  

扩展的正则表达式(grep –E 或者 egrep)

正则表达式   描述   示例  
+   匹配1个或者多个
(*是0个或者多个)
  a+  匹配1个到多个a  
  匹配0个或者一个
(.是只有一个)
  a? 匹配0个a或者1个a  
|   同时过滤多个字符   grep –E “3306|1521” /etc/services  

元字符

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/94d8ad8cdc36e89eca9bbe71b9640bfd.html