教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 范文大全 > 公文资料 >

shell常用命令详解

来源:网络收集 时间:2026-09-04
导读: shell shell常用命令详解 shell AWK简介AWK是一种优良的文本处理工具 :可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它 具备了一个完整的语言所应具有的几乎所有精美特性。实际上 AWK 的确拥有自己的语言:AWK 程序设计语言

shell

shell常用命令详解

shell

AWK简介AWK是一种优良的文本处理工具 :可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它 具备了一个完整的语言所应具有的几乎所有精美特性。实际上 AWK 的确拥有自己的语言:AWK 程序设计语言, 三位创建 者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数 据、对输入执行计算以及生成报表,还有无数其他的功能。

尽管操作可能会很复杂,但命令的语法始终是: awk '{pattern + action}'

内置变量 FNR 当前文件中的记录号

NR 到目前为止记录数 FS 输入域分隔符,默认为一个空格

RS 输入记录分隔符 NF 当前记录里域个数 OFS 输出域分隔符

shell

AWK用法-简单列输出awk -F “|” {print $n} -F: 表示分隔符,多个分隔符可以用-F [] 表示,不加-F默认空格分割 N:表示第几列,全列输出用$0

shell

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

shell

AWK流程控制-if语句格式: if(表达式)

语句1else 语句2

If(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式n) 语句n else 语句n+1

shell

AWK流程控制-while,do while语句格式: while(表达式)

语句例:awk -F”|” {while($1>2)print $0}

do{ 语句 }while(表达式) 例:awk -F”|” {do{print $0}while($1>2)}

shell

AWK流程控制-for语句格式: for(初始表达式;终止条件;步长表达式)

{语句}例:awk -F”|” {for(i=0;i<=NF;i++)printf(“%s\n”,$i)}

shell

内置函数-内置字符串函数实例应用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

splitawk ‘{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 #格式转换

shell

内置函数-内置时间函数函数名 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

内置函数-内置时间函数格式 %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)

shell

内置函数-一般函数函数 说明 用同一个带字符串值的 Expression 参数来关闭由 print 或 printf 语句打开的或调用 getline 函数打开的文件或管道。如果文件或 管道成功关闭,则返回 0;其它情况下返回非零值。如果打算写 一个文件,并稍后在同一个程序中读取文件,则 close 语句是必 需的。 执行 Command 参数指定的命令,并返回退出状态。 从来自 Expression 参数指定的命令的输出中通过管道传送的流中 读取一个输入记录,并将该记录的值指定给 Variable 参数指定的 变量。如果当前未打开将 Expression 参数的值作为其命令名称的 流,则创建流。创建的流等同于调用 popen 子例程,此时 Command 参数取 Expression 参数的值且 Mode 参数设置为一 个是 r 的值。只要流保留打开且 Expression 参数求得同一个字符 串,则对 getline 函数的每次后续调用读取另一个记录。如果未 指定 Variable 参数,则 $0 记录变量和 NF 特殊变量设置为从流 读取的记录。 从 Expression 参数指定

的文件读取输入的下一个记录,并将 Variable 参数指定的变量设置为该记录的值。只要流保留打开且 Expression 参数对同一个字符串求值,则对 getline 函数的每次 后续调用读取另一个记录。如果未指定 Variable 参数,则 $0 记 录变量和 NF 特殊变量设置为从流读取的记录。 将 Variable 参数指定的变量设置为从当前输入文件读取的下一个 输入记录。如果未指定 Variable 参数,则 $0 记录变量设置为该 记录的值,还将设置 NF、NR 和 FNR 特殊变量。

close( Expression ) system(Command )

Expression | getline [ Variable ]

getline [ Variable ] < Expression

getline [ Variable ]

shell

内置函数-一般函数

shell

经典案例-邮件表格输出(格式转换)

shell

经典案例-数组累加举例:求当前文件里每个业务代码的短信下发量

效率很低最老土的方法: Awk –F”|” ‘{a=$17;if(length($17)!=0)print $17}’ submit_ext_20140913.log|sort|uniq -c

最有效率的方法: Awk –F”|” ‘{a=$17;if(length($17)!=0)op[a]++ …… 此处隐藏:2775字,全部文档内容请下载后查看。喜欢就下载吧 ……

shell常用命令详解.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/fanwen/710418.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)