shell常用命令详解解析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AWK流程控制-if语句
格式: if(表达式)
语句1
else 语句2
If(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式n) 语句n else 语句n+1
AWK流程控制-while,do while语句
格式: while(表达式)
语句
例:awk -F”|” ‘{while($1>2)print $0}’
do
{ 语句 }while(表达式) 例:awk -F”|” ‘{do{print $0}while($1>2)}’
AWK流程控制-for语句
格式: for(初始表达式;终止条件;步长表达式)
{语句}
例:awk -F”|” ‘{for(i=0;i<=NF;i++)printf(“%s\n”,$i)}’
内置函数-内置时间函数
函数名 mktime( YYYY MM DD HH MM SS[ DST]) 说明 生成时间格式 格式化时间输出,将时间戳转为 时间字符串,具体格式,见下 表 得到时间戳,返回从1970年1月1 日开始到当前时间(不计闰年) 的整秒数
strftime([format [, timestamp]])
systime()
创建指定时间(mktime,strftime使用) awk 'BEGIN{tstamp=mktime("2014 09 09 17 32 12");print strftime("%c",tstamp);}'
awk 'BEGIN{tstamp1=mktime("2014 09 09 17 32 12");tstamp2=mktime("2014 09 01 00 00 00");print tstamp1-tstamp2}'
shell常用命令详解
AWK简介
AWK是一种优良的文本处理工具 :可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它 具备了一个完整的语言所应具有的几乎所有精美特性。实际上 AWK 的确拥有自己的语言:AWK 程序设计语言, 三位创建 者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数 据、对输入执行计算以及生成报表,还有无数其他的功能。
尽管操作可能会很复杂,但命令的语法始终是: awk '{pattern + action}'
内置变量 FNR 当前文件中的记录号
NR 到目前为止记录数 FS 输入域分隔符,默认为一个空格
RS 输入记录分隔符 NFawk -F “|” ‘{print $n}’ -F: 表示分隔符,多个分隔符可以用-F’[]’ 表示,不加-F默认空格分割 N:表示第几列,全列输出用$0
AWK流程控制-BEGIN,END
在awk 中两个特别的表达式,BEGIN和END,提供BEGIN和END的作用是给程序 赋予初始状态和在程序结束之后执行一些扫尾的工作。任何在BEGIN之后列出的 操作(在{}内)将在awk开始扫描输入之前执行,而END之后列出的操作将在扫描 完全部的输入之后执行。因此,通常使用BEGIN来显示变量和预置(初始化)变 量,使用END来输出最终结果 例:统计各个业务发送短信条数 awk 'BEGIN{FS="|";OFS="\t";print "service_type","send_count"} {a=$17;op[a]++;} END{for(a in op)printf("%s\t%d\n",a,op[a])}' submit_ext_20140905.log
split
awk ‘{split($1,op,“.”);print op[1],op[2],op[3]}’ ip.conf #分割ip sub 和gsub类似,区别:gsub是全部替换,相当于sed ‘s//g’ ;sub是替换第一次出现,相当于sed 's//‘ substr awk ‘{print substr($2,2,4)}’ ip.conf #显示第2列从第2 个位置开始的后4位 sprintf awk ‘{a=sprintf(“%s|%s|%s”,$1,$2,$3);print a}’ ip.conf #格式转换
内置函数-内置字符串函数实例应用
cat ip.conf 172.25.3.15 172.25.3.16 172.25.3.17 172.25.3.19 172.25.3.13 172.25.3.18 172.25.3.20 172.25.3.24 172.25.3.23 gsub awk ‘{gsub($3,“mqq2005”);print $0}’ ip.conf #某列全部替 换 awk ‘{gsub(“mqq”,“abc”,$3);print $0}’ ip.conf #某列部分 替换 index awk ‘{print index($3,“op”)}’ ip.conf #显示密码列”op”第一 次出现的位置 length awk ‘{print length($2)}’ ip.conf #求用户列长度 alexsha mqq_op@2013h1 alexsha mqq_op@2013h1 alexsha mqq_op@2013h1 alexsha mqq_op@2013h1 alexsha mqq_op@2013h1 alexsha mqq_op@2013h1 alexsha mqq_op@2013h1 alexsha mqq_op@2013h1 alexsha mqq_op@2013h1 match awk ‘{print match($1,“15”)}’ ip.conf #找到第一列 出现15的位置,找不到则显示0
内置函数-内置时间函数
格式 %a %A %b %B %c %d %D %e %H %I %j %m %M %p %S %U %w %W %x %X %y 描述 星期几的缩写(Sun) 星期几的完整写法(Sunday) 月名的缩写(Oct) 月名的完整写法(October) 本地日期和时间 十进制日期 日期 08/20/99 日期,如果只有一位会补上一个空格 用十进制表示24小时格式的小时 用十进制表示12小时格式的小时 从1月1日起一年中的第几天 十进制表示的月份 十进制表示的分钟 12小时表示法(AM/PM) 十进制表示的秒 十进制表示的一年中的第几个星期(星期天作为一个星期的开始) 十进制表示的星期几(星期天是0) 十进制表示的一年中的第几个星期(星期一作为一个星期的开始) 重新设置本地日期(08/20/99) 重新设置本地时间(12:00:00) 两位数字表示的年(99)