测试开发基本技能(-)shell(2)

Shell 输入输出

Read 用来读取输入,并赋值给变量

echo ,printf可以简单输出变量。

> file 将输出重定向到另一个文件

>> 表示追加等价于tee -a

< file 输入重定向

| 表示管道,也就是前一个命令的输出传入下一个命令的输入

文件描述符

输入文件—标准输入0

输出文件—标准输出1

错误输出文件—标准错误2

使用 2>&1 >/tmp/tmp < /tmp/tmp

测试开发基本技能(-)shell(2)

管道

把不同程序的输入和输出连接

可以连接更多命令

常见的组合命令Linux三剑客

echo hello world | read x; echo $x

echo hello world | while read x;do echo $x;done


测试开发基本技能(-)shell(2)

grep

基于正则表达式查找满足条件的行

数据查找定位

grep pattern file

grep -i pattern file 忽略大小写

grep -v pattern file 不显示匹配的行

grep -o pattern file 把每个匹配的内容用独立的行显示

grep -E pattern file 使用扩展正则表达式

grep -A-B -C pattern file 打印命中数据的上下文

grep pattern -r dir/ 递归搜索

pattern正则表达式

基本表达式(BRE)

^ 开头 $结尾

[a-z] [0-9] 区间

* 0个或多个

基本正则(BRE)与扩展正则的区别(ERE)

? ?贪婪匹配

+ ?个或者多个

() 分组

{} 范围约束

| 匹配多个表达式的任何一个

curl https://testerhome.com | grep -o 'http://[a-zA-Z0-9\\.\\-]*'

awk

根据定位到的数据行处理其中的分段

awk 'pattern{action}'

awk 'BEGIN{}END{}' 开始和结束

awk '/Running/' 正则匹配

awk '/aa/,/bb/' 区间选择

awk '$2~/xxx/' 字段匹配

awk 'NR==2' 取第二行

awk 'NR>1' 去掉第一行

awk内置变量

FS 字段分隔符

OFS 输出数据的字段分隔符

RS 记录分隔符

ORS 输出字段的行分隔符

NF 字段数

NR 记录数

awk的字段数据处理

-F 参数指定字段分隔符

BEGIN{FS="_"} 也可以表示分隔符

$0代表当前的记录

$1代表第一个字段

$N 代表第N个字段

$NF 代表最后一个字段

把单行分拆为多行

echo $PATH | awk 'BEGIN{RS=":"}{print $0}'

echo $PATH | awk 'BEGIN{RS=":"}{print NR,$0}'

echo $PATH | awk 'BEGIN{RS=":"}END{print NR}'

多行组合为单行

echo $PATH | awk 'BEGIN{RS=":"}{print $0}' | awk

'BEGIN{FS="\\n";ORS=":"}{print $0}'

sed

sed [addr]X[options]

-e 表达式

sed -n '2p' 打印第二行

sed 's#hello#world#' 修改

-i 直接修改源?件

-E 扩展表达式

--debug 调试

echo $PATH | awk 'BEGIN{RS=":"}{print $0}' | sed 's#/

#----#g'

echo $PATH | awk 'BEGIN{RS=":"}{print $0}' | sed -n '/

^\\/bin/,/sbin/p'

sed -i '.bak' -e '' -e ''


分享到:


相關文章: