sed 命令的使用及shell判断语句
sed—>stream editor 行编辑器,sed [option] ‘address command’ filename
address 有以下几种 n eg ‘3d’ 删除第三行
n1,n2 eg ‘3,7d’ 删除第三行到第七行
/regexp/ eg ‘/^com/d’ 删除以com开头的行
1,/regexp/ eg ‘1,/regexp/d 删除从第一行道匹配到的第一行
0,/regexp/ eg ‘0,/regexp/d 删除从第一行道匹配到的最后一行
1~2 eg ‘1~2d’ 删除1,3,57……奇数行
2~2 eg ‘2~2’ 删除2,4,6,8……偶数行
$ 匹配到文件的最后一行
n,+m eg ’10,+9’ 删除从第十行的后九行
command有以下几种
d 删除
s 替换
p 打印(常与-n联合使用)
a 在当前行之后添加一行
i 在当前行之前添加一行
option 选项
-n 只显示匹配到的行
-e 添加多个命令
-f 后面接文件(内容为sed 除sed的内容,但不加单引号)
-r 使用扩展正侧表达式
sed应用示例:
sed –e [address command] –e [address command] filename
sed –f filename
sed –n ‘1,3p’ filename 显示匹配到的一到三行
sed ‘/first/,/second/d’ filename 删除含有first和second的行
sed ‘n1,n2s/A/a/’ filename 把filename中n1到n2行的A替换成a
命令执行完的状态用$?表示 如果执行成功其值为0,否则为1~255
linux的短路操作符 ||(或) 和&&(与)
shell中条件测试:
1 test expression
2 [ expression ] 方括号与表达式中有空格
3 ` expression `
整数的测试:
1 -gt 大于
2 -ge 大于等于
3 -lt 小于
4 -le 小于等于
5 -eq 等于
6 -ne 不等于
字符串测试:
1 =或== 比较字符串
2 > >= < <=
3 -n 是否为空
4 -z 是否存在
文件测试:
1 -d 是否为目录
2 -e 是否存在
3 -f 是否是普通文件
4 -L(-h)文件是否为连接文件
5 -r –w –x 对文件的权限判断
6 -O -G 同是对文件权限判断(属主,属组)
判断语句
if if statement;then 或 if statement;then 或 if statement;then
执行语句 执行语句 执行语句
fi else elif statement;then
执行语句 执行语句
else
执行语句
while/until while 测试条件;do
执行语句
done
注意while的测试条件一定是可变条件否则会死循环。
bash –n filename 测试脚本的语法错误
bash –x filename 测试脚本的逻辑错误
脚本中引用传进来的参数:直接用$1 $2 $3表示第一个,第二个,第三个参数,如果超过9个用${n}引用
读取数据用read 命令:
read A 后面输入的内容赋给A
read A B 读入的内容按空格分别赋给A和B。如有多个空格,第一个空格前的内容给A,剩下的都给B。