Day17操作系统正则符号(2)

2019-11-04  本文已影响0人  a幕城

课程知识梳理复习
1) 系统基础符号
基础符号系列: # $ ! |
引号符号系列: "" '' `` 没有引号
定向符号系列: > >> < << 2> 2>>
路径符号系列: ~ - . ..
逻辑符号系统: && ||
2) 系统通配符号
* 匹配任意字符或字符串信息
{} 生成序列信息
echo {1..10} echo {a..z}
echo {a..c}{1..3}
PS: 利用组合序列和实现快速复制文件或回复数据
复制: cp /oldboy/oldboy.txt{,.bak}
恢复: cp /oldboy/oldboy.txt{.bak,}
[root@linux67 ~]# seq -w 1 2 10
01
03
05
07
09
PS: 利用通配符主要用于匹配文件名称信息

``

系统基础正则符号:
       ^  :  匹配以什么开头的信息
       $  :  匹配以什么结尾的信息
       ^$ :  匹配空行信息
       \  :  将没有意义的信息变得有意义   \n \t \r 
             将有意义的信息变得没有意义   grep "\."
       .  :  匹配任意一个字符且只有一个字符
       *  :  匹配星号前面一个字符 连续出现0或者多次的
       .* :  匹配文件所有信息
       [] :  匹配多个字符信息
      [^] :  匹配多个字符信息进行取反  -v      
`统扩展正则符号
    说明: 扩展正则符号属于高级符号, 只能三剑客命令中 awk grep--->egrep grep -E  sed ---> sed -r 
    
    +  :  匹配加号前面一个字符 连续出现1次或者多次的    
          [root@linux67 oldboy]# cat test01.txt 
          gd
          god
          good
          goood
          [root@linux67 oldboy]# egrep "go+d" test01.txt 
          god
          good
          goood
          
    练习题: 验证以下信息, 身份证合法性
    张三:   110109199905060876
    李四:   oldboy 
    王五:   210109198807086789
    
    [root@linux67 oldboy]# grep -E [0-9]+ test02.txt  -o 
    110109199905060876
    210109198807086789
    
    [数字]+  :  将连续数字字符串信息进行匹配
    [字母]+  :  将连续字母字符串信息进行匹配
    
    ?  :  匹配问号前面一个字符 连续出现0次或者1次的 
    [root@linux67 oldboy]# grep -E "o+" test01.txt 
    god
    good
    goood
    [root@linux67 oldboy]# grep -E "o?" test01.txt 
    gd
    god
    good
    goood
    [root@linux67 oldboy]# grep -E "o?" test01.txt -o
    o
    o
    o
    o
    o
    o
    [root@linux67 oldboy]# grep -E "o+" test01.txt -o
    o
    oo
    ooo 
    PS: 用于匹配问号前一个字符可能出现, 可能没有出现`
如何批量修改文件扩展名
        思路1) 单个文件修改名称
        mv /oldboy/oldboy.txt  /oldboy/oldboy.jpg
        sed  "s#(oldboy01.)txt#mv /oldboy/\1txt /oldboy/\1jpg#g"
        思路2) 多个文件批量修改扩展名
        ls ./*|xargs -n1|sed -r 's#(.*)txt#mv \1txt \1jpg#g'|bash
    
        #rename "替换的信息" "替换成什么信息" 哪些文件要做名称修改
        rename ".jpg" ".txt" oldboy*
        
    |   匹配多个字符串信息
    [root@linux67 oldboy]# grep -E "oldboy|oldgirl" test.txt 
    oldboy linux python
    oldgirl linux python go
    # grep -Ev "^#|^$" test.txt 
    oldgirl linux python go

上一篇 下一篇

猜你喜欢

热点阅读