Linux正则表达式(egrep,sed,awk)

正则表达式

基本正则表达式

字符作用
^匹配行首
$匹配行尾
[]集合,匹配集合中的任意单个字符
[^]对集合取反
.匹配任意单个字符
*匹配前一个字符任意次数 (不能单独取用)
.*.和*的合用,表示匹配全部字符
\{n,m\}匹配前一个字符n到m次
\{n\}匹配前一个字符n次
\{n,\}匹配前一个字符n次以上
\{\}保留

拓展正则

+前一个字符最少匹配一次
?前一个字符最多匹配一次
{n,m}匹配n到m次
()组合为整体,保留
|或者
\b边界

1.过滤工具egrep:
egrep和grep -E一样,支持扩展正则

egrep [选项] 文件

选项:
-i:忽略大小写
-v:取反
-c:统计行数
-q:无输出,静默($?为0,说明有匹配,否则相反)
-n:显示行号
–color: 匹配内容标红
$:最后的
^:开头

2.编辑工具sed:

sed [选项] ‘指令’ 文件

选项:
-n:屏蔽默认输出
-i:直接修改文件内容
-r:启用扩展正则,与其他选项需作为首个选项

指令:
p:打印行
d:删除行
s:替换字符串
i:行前插入
a:行后插入
c:替换行内容
r:读取文件
w:保存到文件

sed -n ‘1,6p’ xx.log
sed -i ‘1,6d’ xx.log
sed -i ‘s/xx/aa/g’ xx.log (g表所有,可填数字,表替换第几个字符,不填默认第一个)
sed -i ‘2itest’ xx.log
sed -i ‘2atest’ xx.log
sed -i ‘2ctest’ xx.log
sed -i ‘2r test.txt’ xx.log (第二行下插入文本test.txt)
sed -i ‘2,4r test.txt’ xx.log (第二行到第四行下都插入文本test.txt)
sed -i ‘2w new.txt’ xx.log (第二行保存为新文本new.txt)
sed -i ‘2,6w new.txt’ xx.log (第二行到第六行保存为新文本new.txt)
sed -i ‘$a minlen=8 dcredit=-2 ucredit=-1 lcredit=-1 ocredit=-1 enforce_for_root’ /etc/pam.d/system-auth (尾行追加)
sed -i ‘s%#ClientAliveInterval 0%ClientAliveInterval 300%’ /etc/ssh/sshd_config (替换文本)

3.处理工具awk:

awk [选项] ‘条件{指令}’ 文件

过滤时机

BEGIN{}读入前处理动作
{}逐行处理
END{}处理完最后一行后执行
选项:
-F:指定分隔符

内置变量:
NF:记录列数
NR:记录行数
$n:表示第n列
$0:整行

(awk ‘$3 ~/abc/ {print $0}’ test.txt)

正则表达
~ :匹配
!~:不匹配

数值比较(== 、 !=、 >、 >=、 <、 <=)
运算符(+、-、*、/、%、++、–、-=、+=、*=、/=)

逻辑比较
逻辑与&&
逻辑或 ||

显示登录失败的ip
awk '/Failed/{print $11}' /var/log/secure
显示第三列是123的行
awk '$3=="123"{print $3}' test.log
统计300以内能被4和7整除的数
seq 300 | awk 'BEGIN{a=0}($0%4==0)&&($0%7==0){a++}END{print a}'
统计日志登录的ip次数
last -f /var/log/wtmp |awk '{ip[$3]++}END{for(a in ip){print ip[a],a}}' |sort -nr
匹配字符修改第二列的值,输出到新文件
awk '/ClientAliveInterval/{$2="200"}{print}' /etc/ssh/sshd_config > /tmp/2
匹配字符修改源文件内容,"/etc/ssh/sshd_config"要加双引号
awk '/ClientAliveInterval/{$2="100"}{print > "/etc/ssh/sshd_config"}' /etc/ssh/sshd_config

location匹配规则

~正则匹配,区分大小写(加上!则为不匹配)
~*正则匹配,不区分大小写(加上!则为不匹配)
\转义字符
(jpg|gif|png)匹配jpg或gif或png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值