设为首页 收藏本站
查看: 3011|回复: 7

[经验分享] perl语言中的AWK之基础篇

[复制链接]

尚未签到

发表于 2012-8-1 09:08:13 | 显示全部楼层 |阅读模式
perl语言中的AWK之基础篇
一:AWK与perl
  • 1. Perl,我们并不陌生了到目前为止,它在web编程中的强大作用,对于每个web开发者而言,重要性不言而喻,
  • 由于perl借取了C、sed、awk、shell scripting以及很多其他程序语言的特性。
  • 其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。
  • 简而言之,Perl 象C一样强大,象awk、sed等脚本描述语言一样方便,由此看来在perl语言中,AWK占据着重要的一席之地。
  • 这里我们不去重点的说perl语句而是介绍一下其重要的组成部分AWK的基础内容,
  • 下面我们就来揭开perl中的awk的神秘面纱吧!
二:AWK简介
  • what is awk? 对于初学者来说这是个模式的代名词,其实awk是三位创造者Aho、Weinberger和Kernighan统称,
  • 简单的来说AWK 是一种用于处理文本的编程语言工具
  • wk可以做些什么?由于其可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。
  • 它具备了一个完整的语言所应具有的几乎所有精美特性,所以其三位创建者已将它正式定义为“样式扫描和处理语言”。
  • 它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
三:AWK处理文本的流程:
  • awk在处理文件时,首先扫描文件中的每一行,查找与命令行中所给定内容相匹配的模式。
  • 如果发现匹配内容,则进行下一个编程步骤。如果找不到匹配内容,则继续处理下一行
四:AWK的使用
  • AWK的 语法格式:
  • Awk [options] ‘scritpts’  filename
  • 或者awk [options] ‘partern [actions] ’ filename
  • [options]:
  • -F: 指定awk 处理文本的行时的分隔符

  • 常用的awk内置的三个变量 OFS  FS  NF
  • -FS 指定字段分隔符
  • 例如
  • Awk  -v FS=: ‘{print $2}’ /etc/passwd
0beb5563fc139e70a6c84ee83baaaf9f.png
f17752e9239cc4c0d5825f3b782bce29.png
  • -v OFS= 定义awk 输出时的字符分隔符
  • 例如: Awk –v OFS=# ‘{print $1,$2}’ /etc/passwd
e7373b4b6f5e236d11ed5484c9c33d06.png
  • 注:上例中的在输入$1和$2,$1,$2的形式是分别输出$1和$2. $1 $2的形式是将$1和$2合并后输出

b8ded9243fe303f156ead8392fede7f7.png
  • NF 表示awk处理一行时的字段总数
  • 例如:输出一行的最后一个字段
  • Awk ‘{print $NF}’ /etc/passwd
cce23649ef4c89fc0b6985bc224603fc.png
  • 注:显示一行的倒数第三个字段
0f71ab207c0987f3c9800dc567bc18a8.png
  • printf 的使用
  • 格式:printf format item1,item2,……
  • 注意:
  • 1:与print命令的最大不同是,printf 需要指定format
  • 2:format用于指定后面的每个item的输出格式
  • 3:printf语句不会自动打印换行符 \n
  • 4:format格式的指示符都以%开头,后跟一个字符
  • format:
  • %c :显示字符的ASCII码
  • %d,%i :显示字符的十进制整数
  • %e,$E 科学计数法显示数值
  • %f :显示浮点数
  • %g ,%G :以科学计数法的格式或者浮点数的格式显示数值
  • %s  显示字符串
  • %u  显示无符号整数
  • %% 显示%自身
  • 另外format 还可以添加修饰符
  • N:显示宽度
  • -:左对齐
  • +:显示数值符号
  • 例如:
628a52b41899e5df9484d03a75ac7624.png
  • Awk 中使用 输出重定向
  • print items > output-file
  • print items >> output-file
  • print items | command
awk的操作符:
  • 算术操作符:
  • -x: 负值
  • +x: 转换为数值;
  • x^y:
  • x**y: 次方
  • x*y: 乘法
  • x/y:除法
  • x+y:
  • x-y:
  • x%y:
  • 字符串操作符:
  • 只有一个,而且不用写出来,用于实现字符串连接;
  • 赋值操作符:
  • =
  • +=
  • -=
  • *=
  • /=
  • %=
  • ^=
  • **=
  • ++
  • --
  • 需要注意的是,如果某模式为=号,此时使用/=/可能会有语法错误,应以/[=]/替代;
  • 布尔值
  • awk中,任何非0值或非空字符串都为真,反之就为假
  • 比较操作符:
  • x < y       True if x is less than y.
  • x <= y  True if x is less than or equal to y.
  • x > y       True if x is greater than y.
  • x >= y  True if x is greater than or equal to y.
  • x == y  True if x is equal to y.
  • x != y  True if x is not equal to y.
  • x ~ y      True if the string x matches the regexp denoted by y.
  • x !~ y  True if the string x does not match the regexp denoted by y.
  • subscript in array    True if the array array has an element with the subscript subscript
  • 表达式间的逻辑关系符:
  • &&
  • ||
  • 条件表达式:
  • selector?if-true-exp:if-false-exp
  • selector :条件表达式
  • if-true-exp:statement
  • if-false-exp: statement
  • 下面我们来重点说说awk的模式使用
  • awk的模式:
  • awk [options] ‘parten’ ‘print ….’ filename
  • parten:
  • 1:正则表达式 格式为/regular expression/
  • 2: 表达式  其值非0或者非空字符时满足的条件  例如:$1 ~ /user/ 或者 $1 == ‘user’
  • 用运算符~(匹配)和 ~ !(不匹配)
  • 例如:

    817e80f755af0104143882ceebd3831c.png
    e8b9779ae09a2513956e2f98d3ff4d07.png
  • 指匹配范围格式为pat1,pat2 (pat代表模式)同sed用法
  • BEGIN/END 特殊格式
  •    BEGIN :在awk执行动作之前的处理动作
  •     让用户指定在第一条输入记录被处理之前所发生的动作,通常可在这里设置全局变量
  • END:在awk 执行动作完成后执行的动作
  •     让用户在最后一条输入记录被读取之后发生的动作
  • 例如:
  • Awk –F:’$NF ~/bash/ {print “username bash” ;printf “%-10s %s\n,$1,$NF”}’ /etc /passwd
dd547b1cb2734542724355908aec0a50.png
983e8cc099e07d91595c9abbc55eb962.png
35bf1fde5cfdf75288af13b0f74ea35c.png
f50b8b19412c3b5dabca37258330c905.png
空模式是指 :匹配所有行
由于篇幅限制字数限制不能全部介绍,如有错误,还望多多指正,多多讨论,谢谢。下篇将继续awk的循环控制语句的使用,
8c1547867f9b91fc061021eb579a2fcf.png
5af20b61bf914167a54792a5da234805.png
b2c5a7e18719326c9b1990aea31058b1.png
10705574656ff87f159fa53c81b822b8.png
1229c6e110a8faed845d23c3a3d8523d.png
1dc3a94969effc02eb3fce5e5c4de450.png
51a29bb938cff8486844a8f5e3750ba9.png
b2e8d6bbd03311245155fa2084e6c03d.png
bb1c2d682888f37aff5200bfb8960fde.png
cb5f502f00c7384b0a15ae6cb228b9ee.png
da38ec9c8531680f216afe7e0e79a327.png
c385b7eaef6b41a25eda5a9708f2492a.png
5f1342d865af2751d48b48a16d79aa38.png
755a9ef86d3fb1f405312d72c752e738.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-720-1-1.html 上篇帖子: 深入浅出linux三剑客之sed必杀技一例 下篇帖子: 文本操作系列-touch

尚未签到

发表于 2013-3-13 23:30:10 | 显示全部楼层
有道理。。。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-16 04:01:52 | 显示全部楼层
关羽五绺长髯,风度翩翩,手提青龙偃月刀,江湖人送绰号——刀郎。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-19 07:21:03 | 显示全部楼层
商女不知亡国恨、妓女不懂婚外情。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-22 15:27:04 | 显示全部楼层
女,喜甜食,甚胖!该女有一癖好:痛恨蚂蚁,见必杀之。问其故曰:这小东西,那么爱吃甜食,腰还那么细!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-28 22:57:30 | 显示全部楼层
有竞争才有进步嘛

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-6-3 18:06:00 | 显示全部楼层
花前月下,不如花钱“日”下!*^_^*

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

累计签到:54 天
连续签到:1 天
发表于 2013-12-15 17:44:09 | 显示全部楼层
  学习了

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表