shell编程-2
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
awk中正则表达式及其操作
awk -F"|" '{if($2~/b2/) print $0}' 2.txt aa2|bb2|cc2 awk -F"|" '{if($2=="bb2") print $0}' 2.txt aa2|bb2|cc2
awk内置变量
ARGC 命令行参数个数 ARGV 命令行参数排列 ENVIRON 支持队列中系统环境变量的使用 FILENAME awk浏览的文件名 FNR 浏览文件的记录数 FS 设置输入域分隔符,等价于命令行- F选项 NF 浏览记录的域个数 NR 已读的记录数 OFS 输出域分隔符 ORS 输出记录分隔符 RS 控制记录分隔符
shell编程-2
目录
1.awk用法 2.sed用法 3.shell编程基础 4.脚本调试 5.符号<<及()的用法 6.脚本实例分析
2
Leabharlann Baidu
1.awk用法
3
awk命令简介
在shell命令或编程中,可以用awk强大的的文 本处理能力。如果要格式化报文或从一个大的文 本文件中抽取数据包,那么awk可完成这些任务。 awk是一种解释的编程语言。awk也是shell过 滤工具中最难掌握的。awk是一种自解释的编程 语言。结合awk和sed和grep,将会使awk编 程更加容易。 awk语言最基本的功能是在文件或字符串中基于 指定的规则浏览和抽取信息。
awk内置字符串函数
gsub(r,s) 在整个$0中用s替代r gsub(r,s,t) 在整个t中用s替代r index(s,t) 返回s中字符串t的第一位置 length(s) 返回s长度 match(s,r) 测试s是否包含匹配r的字符串 split(s,a,fs) 在fs上将s分成序列a sprint(fmt,exp) 返回经fmt格式化后的exp sub(r,s) 用$0中最左边最长的子串代替s substr(s,p) 返回字符串s中从p开始的后缀部分 substr(s,p,n)返回字符串s中从p开始长度为n的 后缀部分
4
awk使用方式
常见2种方式 awk [-F field-separator] 'commands' inputfile(s) ….| awk [-F field-separator] 'commands'
5
awk模式与动作
任何awk语句都由模式和动作组成。模式部分决 定动作语句何时触发及触发事件。处理即对数据 进行的操作。如果省略模式部分,动作将时刻保 持执行状态。 模式包括两个特殊字段BEGIN和END 实际动作在大括号{ }内指明
6
awk域和记录
awk执行时,其浏览域标记为$1,$2 . . . $n。 这种方法称为域标识。所有域用$0标识。
cat 1.txt aaa1 bbb1 ccc1 aaa2 bbb2 ccc2 aaa3 bbb3 ccc3 awk '{print $2}' 1.txt bbb1 bbb2 Bbb3 awk '{print $0}' 1.txt aaa1 bbb1 ccc1 aaa2 bbb2 ccc2 aaa3 bbb3 ccc3
awk中如何引用shell的变量
-v ,其作用就是类似为常数赋值的作用,每赋值一个常数加 一个“-v” a=aaaa1 b=bbbb2 echo "aaaa"| awk -v var1=$a -v var2=$b '{print var1"---"var2}' aaaa1---bbbb2 amt1=88.88 amt2=1.5327 amt3=$(awk -v var1=$amt1 -v var2=$amt2 'BEGIN{OFMT="%.2f";print var1*var2}') echo $amt3 136.23
awk实例
awk -F"|" '{print $NF"------"NF}' 2.txt ccc------3 cc2------3 cc3------3 awk -F"|" '{print $0"------"NR}' 2.txt aaa|bbb|ccc------1 aa2|bb2|cc2------2 aa3|bb3|cc3------3
awk域分隔符
如果域间使用空格作为域分隔符,则不必用-F选 项划分域,否则需要通过-F指定域分隔符,或 通过FS指定
awk实例
cat 2.txt aaa|bbb|ccc aa2|bb2|cc2 aa3|bb3|cc3 awk '{print $1}' 2.txt aaa|bbb|ccc aa2|bb2|cc2 aa3|bb3|cc3 awk -F"|" '{print $1}' 2.txt aaa aa2 aa3 awk -F"|" '{print $2,$3}' 2.txt bbb ccc bb2 cc2 bb3 cc3
awk实例
awk -F\| '{print $2,$3}' 2.txt bbb ccc bb2 cc2 bb3 cc3 awk -F"|" 'BEGIN{OFS="|"} {print $2,$3}' 2.txt bbb|ccc bb2|cc2 bb3|cc3 awk 'BEGIN{FS="|"}{OFS="|"} {print $2,$3}' 2.txt bbb|ccc bb2|cc2 bb3|cc3 awk 'BEGIN{FS="|"}{OFS="::|"} {print $2,$3}' 2.txt bbb::|ccc bb2::|cc2 bb3::|cc3
awk操作符
= += *= /= %= ^= 赋值操作符 ? 条件表达操作符 || && ! 并、与、非 ~ !~ 匹配操作符包括匹配和不匹配 < <= == != >> 关系操作符 +-*/%^ 算术操作符 ++ -前缀和后缀
awk实例
cat 3.txt aaa|22|33 bbb|33|22 ccc|55|22 awk -F"|" '{sum+=$3} {print sum}' 3.txt 33 55 77 awk -F"|" '{sum+=$3} END{print sum}' 3.txt 77