设为首页 收藏本站
查看: 1390|回复: 3

linux shell编程指南第九章------AWK 介绍4

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2013-12-4 09:33:51 | 显示全部楼层 |阅读模式
当然可以使用管道将值传入a w k。本例使用w h o命令, w h o命令第一列包含注册用户名,

这里打印注册用户,并加入一定信息。

[iyunv@localhost ~]# who
root     :0           2013-12-03 20:47
root     pts/1        2013-12-03 20:48 (:0.0)
[iyunv@localhost ~]# who |awk '{print $1 "is logged on"}'
rootis logged on
rootis logged on

a w k也允许传入环境变量。下面的例子使用环境变量L O G N A M E支持当前用户名。可从
w h o命令管道输出到a w k中获得相应信息。

[iyunv@localhost ~]# who |awk '{if($1==user) print $1" you are connected to "$2}'user=$LOGNAME



可以将a w k脚本写入一个文件再执行它。命令不必很长(尽管这是写入一个脚本文件的主
要原因),甚至可以接受一行命令。这样可以保存a w k命令,以使不必每次使用时都需要重新
输入。使用文件的另一个好处是可以增加注释,以便于理解脚本的真正用途和功能。
使用前面的几个例子,将之转换成a w k可执行文件。像原来做的一样,将学生目前级别分
相加awk ‘(t o t + = $ 6) END{print "club student total points:" t o t }’ g r a d e . t x t。
创建新文件s t u d e n t t o t . a w k,给所有a w k程序加入a w k扩展名是一种好习惯,这样通过查
看文件名就知道这是一个a w k程序。文本如下:


第一行是! /bin/awk -f。这很重要,没有它自包含脚本将不能执行。这一行告之脚本系统
中a w k的位置。通过将命令分开,脚本可读性提高,还可以在命令之间加入注释。这里加入头
信息和结尾的平均值。基本上这是一个一行脚本文件。

[iyunv@localhost huangcd]# cat cat student_tot.awk
cat: cat: 没有那个文件或目录
#!/bin/awk -f
BEGIN{print "Student    Date  Member No.  Grade  Age Points Max"
print "Name       Joined                       Gained Point Available"
print "=============================================================="
}
(tot+=$6)
END{print "Club student total points :"tot
}
[iyunv@localhost huangcd]# ./student_tot.awk  grade.txt
Student    Date  Member No.  Grade  Age Points Max
Name       Joined                       Gained Point Available
==============================================================
M.Tansley   05/99     48311  Green    8    40   44
J.Lulu      06/99     48317  green    9    24   26
P.Bunny     02/99     48     Yellow   12   35   28
J.Troll     07/99     4842   Brown-3  12   26   26
L.Tansley   05/99     4712   Brown-2  12   30   28
Club student total points :155


如果使用非空格符做域分隔符( F S)浏览文件,例如# 或:,编写这样的一行命令很容易,
因为使用F S选项可以在命令行中指定域分隔符。

使用a w k脚本时,记住设置F S变量是在B E G I N部分。如果不这样做, a w k将会发生混淆,
不知道域分隔符是什么。
下述脚本指定F S变量。脚本从/ e t c / p a s s w d文件中抽取第1和第5域,通过分号“;”分隔
p a s s w d文件域。第1域是帐号名,第5域是帐号所有者。

[iyunv@localhost huangcd]# cat passwd.awk
#!/bin/awk -f
BEGIN{
FS=":"}
{print $1,"\t",$5}
[iyunv@localhost huangcd]# ./passwd.awk  /etc/passwd
root     root
bin      bin
daemon   daemon
adm      adm
lp       lp
sync     sync
shutdown         shutdown


前面讲述s p l i t函数时,提到怎样使用它将元素划分进一个数组。这里还有一个例子:

[iyunv@localhost huangcd]# awk 'BEGIN {print split("123#456#789",myarray,"#")}'
3

在上面的例子中,s p l i t返回数组m y a r r a y下标数。实际上m y a r r a y数组为:

myarray[1] = "123"

myarray[2]= "456"

myarray[3]="789"


[iyunv@localhost huangcd]# cat arraytest.awk
#!/bin/awk -f
BEGIN{
record="123#456#789";
split(record,myarray,"#")}
END{for(i in myarray)
    {print myarray}}
[iyunv@localhost huangcd]# ./arraytest.awk  /dev/null
123
456
789



运维网声明 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-11094-1-1.html 上篇帖子: linux shell编程指南第十二章------------tr 用法 下篇帖子: linux shell编程指南第十四章------环境和shell变量 linux
发表于 2013-12-15 18:26:49 | 显示全部楼层
爱是个动词。打开双腿,要先打开心门,而心门的钥匙,就是男人不安分的手。

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

尚未签到

发表于 2013-12-22 04:48:12 | 显示全部楼层
告诉我怎么才能将伱从我的记忆清楚。

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

尚未签到

发表于 2013-12-28 19:29:00 | 显示全部楼层
提笔写忧伤。落笔映惆怅丶

运维网声明 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

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