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