grep -n [^word] +路径 过滤Word为行首的句子
grep -n [word$] +路径 过滤Word在行末的句子
grep -n e.e +路径 过滤e e,中间表示字符,空格也行
grep -n \' +文件名 过滤含有单引号的句子
grep -n 'ess*' +路径 过滤*号前一个字符0个或无穷个,因为*也可以为0,es也会被过滤
cat /etc/passwd | wc -l 只显示行数
cat /etc/passwd | wc 统计
image.png
匹配一下手机号码
1( 5[02689]|3[1-9]|7[279]|8[][0-9])[0-9]\{8\}
匹配邮箱账号
[[:alnum:]]+@(163|126|qq|139).(com|cn)
查询vsftpd的配置文件
egrep -v '^#|^$|^[[:blank:]]$' vsftpd.conf
shell_day03_昨日回顾.txt
- 正则
工具: grep egrep awk sed vi vim( :%/正则表达式//g)
-基础正则
[abc] a/b/c 中括号内的任意一个字符
[^abc] 必须有一个字符,但不能是 a/b/c
^
$
egrep -v '^#|^$|^[[:blank:]]$' vsftpd.conf
.任意一个字符
- 零到任意个前一个 RE 字符
RE 字符可以示普通字符,也可以是正则的匹配模式
-扩展正则
?有没有媳妇
- 一定有一个,或者多个
(abc) 小括号内是分组,也就是 abc 必须连续出现
| 或的关系
'a|b|c|d'
(ab|ac|de|123)
([0-9]|[a-z]+) 匹配 0 到 9 之间的任意 一个 数字,或者匹配 a 到 z 的任意多个字符
image.png
image.png
$cut -d 指定分隔符 -f 取第几个值
$IFS 可以指定任意的字符为分隔符(脚本里常用)
!/usr/bin/env bash -------------------------------bash
oldIFS=$IFS ---------------------------------指定原来的oldIFS
IFS=$'\n' ---------------------------------指定新的IFS
num_size=0 ----------------------------------指定size总量初始值为0
for line in $(grep 'Size' R710-memory-info) ---------筛选文件里的‘Size’
do
size=$(echo $line |egrep -o "[0-9]+") -------------- 定义size的值如何得
if [ ! -z $size ];then --------------------------!-z 不为0
num_size=$(( num_size + size )) -----------------------每次size相加
fi
done
echo $num_size ----------------------------------------输出值
export IFS=$oldIFS
在判断式中使用 正则需要用双[[ ]]
=~表示匹配
比如: [[ "$val" =~ [a-z]+ ]]
tr -d ' ' 表示去除空格
打印ip
ip a |grep ens33|grep inet|awk -F'[/]' '{print $1}'|awk '{print $2}'
ip a |grep ens33|grep \/ |awk -F'[/]' '{print $1}'|awk '{print $2}'
过滤文件内容,要求把含有Size,type,speed,locator的行列出来,并用中文表示
#!/bin/sh
oldIFS=$IFS
IFS=$'\n'
for line in $(egrep 'Size: [0-9]+ MB' -A 12 R710-memory-info)
do
# echo $line |egrep "Size|Locator|Type:|Speed"|grep -v "Bank"
#if [[ $line =~ Size|Locator|Type:|Speed ]] && [[ ! $line =~ Bank ]];then
# echo $line
if [[ $line =~ Size ]];then
echo "----------------------------"
fi
key=$(echo $line |cut -d: -f1|tr -d ' ')
val=$(echo $line |cut -d: -f2)
if [[ "$key" == "Size" ]];then
echo "容量:$val"
elif [[ "$key" == "Type" ]];then
echo "类型: $val"
elif [[ "$key" == "Locator" ]];then
echo "定位器: $val"
elif [[ "$key" == "Speed" ]];then
echo "速率: $val"
fi
done
image.png
去除两端的空格
print ("|%s|" % s) 打印出,能看出有没有空格
image.png