测试开发进阶(四十一)
校验Shell格式
流程控制
while
只要满足条件,就一直循环
1 | while 条件 |
1 | !/bin/bash |
case
1 | case 变量名 in |
1 | !/bin/bash |
文本处理三剑客
- grep
- sed
- awk
grep
grep [option][pattern][file1,file2]
some command | grep [option][pattern]
常用选项
-i
忽略大小写
-c
只输出匹配行的数量
-n
显示行号
-r
递归搜索
-E
支持拓展正则表达式
-w
匹配整个单词
-l
只列出匹配的文件名
-F
不支持正则,按字符串字面意思进行匹配
最基础用法
1 | grep mail passwd |
大小写不敏感
1 | grep New passwd |
匹配有多少行符合要求
1 | grep New passwd -i -c |
显示匹配的内容的行号
1 | grep New passwd -i -n |
查找路径下的内容
1 | grep -r "bash" ./ |
只输出文件名
1 | grep -rl "bash" ./ |
正则匹配
1 | grep "s{2}" passwd -E |
匹配整个单词
1 | grep "oo" passwd -w |
实例
/dev/null
相当于linux中的回收站
1 | grep "$USER" passwd > /dev/null && echo "$USER是存在的"|| echo "$USER是不存在的" |
查看是否运行了docker
-v
:排除
1 | 查看ps中包含docker的内容 |
sed
- 流编辑器,对文本进行逐行处理
sed [option] "pattern command" file
some command | sed [option] "pattern command"
常用选项[option]
-n
只打印模式匹配的行
-f
加载存放动作的文件
-r
支持拓展正则
-i
直接修改文件
匹配模式pattern
5
只处理第五行
5,10
只处理第五行到第十行
/pattern1/
只处理能匹配到pattern1的行
/pattern1/,/pattern2/
只处理从匹配到pattern1的行到匹配pattern2的行
command
命令
查询p
新增
a
在匹配行的后面新增i
在匹配行前新增r
外部文件读入,行后新增w
匹配行写入外部文件
删除d
修改
s/old/new
,只修改匹配行中第一个olds/old/new/g
修改匹配行中所有的olds/old/new/ig
忽略大小写
p
相当于print
匹配的行打印两次
原始行+匹配的行
1 | sed "p" passwd |
只打印匹配的行
1 | sed -n "p" passwd |
匹配mail
的那行
1 | sed "/mail/ p" passwd -n |
匹配以s开头的内容
1 | sed -n "/^s/ p" passwd |
匹配mail开头的行到s开头的行
1 | sed -n "/^mail/,/^s/ p" passwd |
在3,4,5行前面添加内容
1 | sed '3,5 i Add content before the current line' passwd |
正式写入需要加-i
1 | sed -i '3,5 i Add content before the current line' passwd |
插入文件的内容
1 | echo "testfile" >> a.txt |
匹配内容写入文件
1 | sed -i '/man/,/mail/ w b.txt' passwd |
删除内容
1 | sed -i '/test/ d' passwd |
修改
1 | sed '3,6 s/nologin/666/' passwd |head |