Linux运维+系统服务搭建(五)bash条件判断和流编辑器sed基本用法
2016-10-19 23:06
706 查看
bash中如何实现条件判断? 条件测试类型: 整数测试 字符测试 文件测试 条件测试表达式(三种方式): 【 expression 】:一个中括号里面两边必须为空格 【【expression】】:两个中括号是bash关键字 test expression :采用test命令 整数比较: -eq:判断两个整数是否相等:比如 $A -eq $B 返回的两种状态: 执行结果状态:
-ne:测试两个整数是否不相等:不等–为真,相等–为假
-gt:测试一个数是否大于另外一个数:
-lt:测试一个数是否小于另外一个数:
-ge:大于或者等于
-le:小于或者等于
命令的间逻辑关系:
逻辑与:&&
逻辑或:||
注意点 :id 用户名 追缴到黑洞命令 第一个假如该root用户存在 输出helloworld 第二个假如rourou用户不存在则添加用户rourou 变量名称取名字注意点: 只能包含字母数字和下划线。并且不能数字开头 shell中如何进行算术表达式 A=3 B=6 1、let算术运算表达式 let C=$A+$B 2、$[算术运算表达式] C=$[$A+$B] 3、$((算术运算表达式)) C=$(($A+$B)) 4、expr算术运算表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用``反点,之间需要空格 C=`expr $A + $B` 单分支条件判断、控制结构 单分支if语句 if 判断条件,then statement1 statement2 fi 双分支的if条件语句 if 判断条件,then statement1 statement2 else statement1 statement2 fi 双分支的if条件语句 if 判断条件,then statement1 statement2 elif statement1 statement2 elif statement1 statement2 else statement1 statement2 fi exit:退出脚本 命令执行状太结果和执行命令 exit #(0-255) 如果脚本没有明确定义退出状态码,那么最后执行的一条命令的退出码即为脚本退出状态码 文件测试 -e FILE: 测试该FILE是否存在 -Exit简写 -f FILE :测试文件是否为普通文件 -d FILE:测试指定文件是否为目录 -r FILE:当前用户对该文件是否有读权限 -w FILE当前用户对该文件是否有写权限 -x FILE当前用户对该文件是否有执行权限 测试脚本是否有语法错误 bash -n 脚本 bash -x 脚本:单步执行 sed基本用法: sed: Stream Editor 只操作文本、逐行编辑---所以称为行编辑器 vi--------------------------------全屏编辑器 每一次将行内容读取到内存中编辑 模式空间---指定哪些行和grep一样处理符合模式条件行放入模式空间假如匹配成功则执行内容 默认情况下不编辑源文件,仅对模式空间中的数据做处理 而后,处理的模式空间的内容显示打印出来 格式:sed 'AddressCommand' file ...... sed 'AddressCommand' file ......符合address这个地址的这么多文件执行Command(除了sed其他都是参数) Address: 1、StartLine ,EndLine(起始和终止) 比如1,100 $:最后一行 2、指定表达式来匹配模式---/RegExp/ /^root/ 3、/pattern1/,/pattern2/ 第一次被pattern1匹配到的行开始,至第一次被pattern2匹配 4、LineNumber 指定的行 5、StartLine,+N 从startline开始,向后的N行: Command: d:删除符合条件的行 p:显示符合条件的行 a : \string,在指定行后面追加新行,内容为string i: \string,在指定行前面追加新行,内容为string r FILE: 将指定的文件的内容添加至符合条件的行处 w FILE:将指定范围内容的内容另存至指定的文件中 s /pattern(查找的模式可以使用正则表达式)/String(查找的模式替换成字符串)/修饰符:查找并替换默认只替换每行中第一次匹配的串 想要替换所有需要加修饰符 g:全局替换 i:忽略字符串大小写 s后面的分割符也可以换成三个相同的###或者@@@但是注意一点不能用的时候是你要查找替换的内容和你的分隔符不能相同 后向引用同grep用法、\(\) \1, \2 sed 's#1..e#&r#g' sed.txt-----等同于sed 's#1..e#\lr#g' sed.txt &引用模式匹配所有的符合l..e的实际内容 但是有时候必须用后向引用----例如以下情况 sed 's#l\(..e)#L\1#g' sed.txt -----该文件内容全局替换小写的l替换成大写的L然后引用的内容只能拿()包住 用法: d--- sed '1,2d' /test/test.txt-------删除该文件第一行到第二行 sed '/wolf/d' /test/test.txt--------删除行内包含wolf的模式 sed '1,+2d' /test/test.txt-------删除1后2行 sed '/^\//d' /test/test.txt-------删除带斜线的需要转义 p--- sed -n(-n静默模式,不再显示模式空间中的内容) sed -n '/^\//p' /test/test.txt -i:直接修改源文件 -e:Script -e Script :可以同时执行多个脚本 -f: 用-f读取一个文件这个文件的每一行都是一个脚本 sed -f /path(文件路径)/demo file -r:标示使用扩展正则表达式 hisory | sed 's#[[:space:]]##g' | cut -d'' -f1 ------取出所有历史记录的首段行数字 a-- sed -n '/^\//a \# hellowold \n# hello linux' /test/test.txt------在该文件里面带有/行后面追加#helloworld #hello linux r-- sed '2r /test/test' /etx/demo w-- sed '/oot/w /test/demo.txt' /etc/demo sed -n '/oot/w /test/demo.txt' /etc/demo s-- sed 's/oot/OOT/' /etc/demo 将符合oot的行全都替换为OOT
相关文章推荐
- Linux运维+系统服务搭建(六)vim编辑器用法 (二)
- Linux运维+系统服务搭建(六)vim编辑器用法
- Linux运维+系统服务搭建(一)bash命令及其特性
- Linux运维+系统服务搭建(四)shell编程--bash基础
- linux中行编辑器sed的基本用法
- Linux运维+系统服务搭建----Could not retrieve mirrorlist
- 2018-2-4Linux系统管理(5)bash脚本编程参数变量及条件判断
- Linux运维+系统服务搭建(七)文件查找
- LINUX系统服务器上搭建DHCP服务,实现两大基本功能:1,自动分配ip;2,手工指定ip
- frp内网穿透基本用法服务搭建
- Linux运维+系统服务搭建(三)用户管理及权限、IO重定向、grep、正则表达式
- Linux基础入门及系统管理01-bash脚本编程之二if等条件判断脚本知识17
- bash的基本用法
- 用SC命令将任意程序设为系统服务(最全的SC用法)
- coldfusion 条件表达式、循环基本用法
- sersync 文件同步系统(一) 服务初步搭建
- Android开发基础(2.1)--NDK 的搭建和基本用法
- Linux 下Sed基本用法
- RHEL5搭建一个简单的日志服务系统
- WPF从我炫系统5---基本控件的用法