shell:正则表达1
Posted 法外狂徒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell:正则表达1相关的知识,希望对你有一定的参考价值。
1.linux通配符
*:代表所有字符(0到多个)
?:代表一个字符
;:连续不同命令之间的分隔符
#:配置文件注释
|:管道
~:当前用户的家目录
-:上一次所在的路径
$:变量前面需要加的符号
/:路径分隔符
>或1>:重定向,会覆盖原有数据
>>:追加重定向
<:输入重定向(xargs、tr)
<<:追加输入重定向(cat)
‘:单引号,不具有命令置换功能,输出时所见即所得
":双引号,具有变量置换功能,解析变量后才输出。不加引号相当于双引号
`:反引号,两个``中间为命令,会先执行,等价于$()
{}:命令区块组合或内容序列,echo stu{1..5};cp a.txt {,.bak}
# mkdir -p /data/{3306,3307}/data
!:逻辑运算中的非(not)
&&:and并且,前一个命令执行成功时,才执行后一个命令
||:or或,前一个命令执行失败时,执行后一个命令
.:当前目录
..:上一级目录
2.正则表达式:为处理大量字符串而定义的一套规则和方法
第一波:
# grep "^m" oldboy.txt 匹配以m开头的字符,因为是贪婪模式,所以匹配到整行
# grep "m$" oldboy.txt 匹配以m结尾的字符
# grep -n "^$" oldboy.txt 匹配空行并显示行号
# grep -vn "^$" oldboy.txt 排除空行
.:代表且只能代表任意一个字符
:转义,让有特殊意义的字符,只代表字符本身
*:重复0个或多个前面的一个字符,例如:my*,0个y,会匹配有m字符的字符串;1个y,my;多个y,myyy
.*:匹配任意字符
# grep -no "m" oldboy.txt 只显示匹配到的m字符
3.基础正则第二波:
# grep -no [abc] oldboy.txt 匹配集合内的任意一个字符
# grep -no [^abc] oldboy.txt 不匹配集合内的字符
a{n,m} 前一个字符,重复n到m次
a{n,} 重复至少n次,
a{n} 重复n次
a{,m} 最多重复m次
注意:grep -E 可以不用加,egrep、sed -r也可以不用加
-i、-v为常用参数、-o(用于统计出现在文中的次数)
以上是关于shell:正则表达1的主要内容,如果未能解决你的问题,请参考以下文章