Bash特性

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

  1. 正则
    工具: 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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Python中的正则表达式(re) import rere.match #从开始位置开始匹配,如果开头没有则无re...
    BigJeffWang阅读 7,137评论 0 99
  • 正则表达式到底是什么东西?字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等...
    狮子挽歌阅读 2,163评论 0 9
  • Day 17 补充 重载:函数的重载 -- 函数名相同但是参数不同的函数可以有多个,但是python不支持函数...
    晓晓_007f阅读 355评论 0 1
  • http://www.jb51.net/tools/zhengze.html 正则表达式30分钟入门教程 版本:v...
    nullleaf阅读 619评论 0 2
  • 小男孩跟在哥哥的滑板车后,奔跑,展开双臂,像只快乐的小鸟,马上快追到他了,滑行的速度比不上他奔跑的速度。 两位孩子...
    昆悠阅读 292评论 0 3