AWK是一种用于文本处理的专业工具,经常在Linux系统中使用。这个小巧而强大的工具可以使您更高效地处理和操作文本数据。AWK本身是一种命令行工具,它使用一种特定的语法,也称作AWK语法。
公司主营业务:网站设计制作、成都做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出横峰免费做网站回馈大家。
下面我们将深入探讨AWK语法,掌握基本的操作技能,以便使用该工具更加高效地处理文本数据。
1.使用AWK
在Linux终端中,输入下面的命令来启动AWK:
awk [option]
其中,option代表可选的选项,program为AWK程序,file为要进行文本处理的文件名。如果没有指定文件名,则默认从标准输入中读取数据。
2. AWK程序的结构
AWK程序通常由以下三个部分组成:
“`
BEGIN { 初始化 }
{ 操作 }
END { 结束操作 }
“`
其中BEGIN和END块是可选的,而操作块则是必要的。
BEGIN块一般用于进行初始化操作,例如指定输入字段分隔符(field separator)、输出字段分隔符(output separator)等。END块则用于在处理完成之后执行一些操作,例如输出统计结果。
操作块是AWK程序的核心,其中包含了一系列对文本数据进行处理的命令。
3. AWK中的变量
AWK使用一系列预定义的变量,这些变量都以$开头。
例如,$0代表当前输入行的全部内容,$1代表该行的之一个字段,$2代表第二个字段,以此类推。
在AWK程序中,我们可以创建自定义变量,例如:
“`
x = 10
y = 20
“`
4. 条件语句
在AWK中,可以使用if和else语句来实现条件判断。例如:
“`
if ( x > y ) {
print “x is greater than y”
} else {
print “y is greater than x”
}
“`
5.循环语句
AWK中的循环语句有for、while、do-while等。例如:
“`
for ( i = 1; i
print “The value of i is ” i
}
“`
这段代码将输出1-10的数字序列。我们可以使用for循环来遍历并处理输入数据中的每一行。
6.正则表达式
在AWK中,可以使用正则表达式来匹配文本内容。例如:
“`
/123/ { print “Found 123” }
“`
这段代码将输出包含123的行。
我们还可以使用组来匹配正则表达式中的部分内容。例如:
“`
/(\w+)\s+\1/ { print “Found a repeated word: ” $1 }
“`
这段代码将查找文本数据中重复的单词。
7.函数
AWK提供了丰富的内置函数,例如length、substr、index等。我们也可以自定义函数,例如:
“`
function square(x) {
return x * x
}
“`
这样,在程序中就可以使用该函数,例如:
“`
for ( i = 1; i
print “The square of ” i ” is ” square(i)
}
“`
8.流程控制
除了条件语句、循环语句和函数之外,AWK还提供了一些流程控制功能,例如break、continue和next等。这些功能可以帮助我们更加灵活地处理文本数据。
9.示例
下面是一个简单的AWK程序示例:
“`
BEGIN {
FS = “,” # 设置输入字段分隔符
OFS = “\t” # 设置输出字段分隔符
sum = 0 # 初始化计数器
}
{
sum += $3 # 计算第三列的总和
print $1, $2, $3, $3 * $3 # 输出前三列和第三列的平方
}
END {
print “The sum is: ” sum # 输出计数器结果
}
“`
该程序读取包含逗号分隔数据的文本文件,计算第三列的总和并输出每行的前三列以及第三列的平方。最后输出第三列的统计结果。
10.
相关问题拓展阅读:
echo ‘\s’
echo ‘ ‘
虽然高深的话真心说不出来。。但是通过这两条命令的执行结果,应该能枣汪看出来再shell里,空格似乎不凳纳仔是“\s” 具体是不是根据ASCII区分的还真不知道诶。。/s确茄绝实有特殊意义没错,但不是在哪都特殊,就像^是开头$是结尾,但是把他俩用在你这个例子里面时,也照样只当普通字符处理了。linux新手~互相学习哈
\s是正则里面的表达方式
-F里面的参数不是正则,就是单纯的字符而已。
单引号会使得引号内的字符为字符本身,用‘ ’;或者不要-F选项,因为默认是以空格为分隔符的。
百度吧 百度好多
所有的编程书籍都是通过一个“Hello world!”简单程序入门,作为借鉴,本文也采用此方法带大家入门。现在,在当前目录下建立一个文本文件hello.txt,内容如下:
Hello world!
在友数命令行中输入以下命令:
$ awk ‘{ print }’ hello.txt
执行后hello.txt文件的内容显示在屏幕上。编写并且执行awk程序的方法很简单,如上所示,花括号内的是程序代码,后面的hello.txt为指定的输入文件。awk是一种行处理皮枣程序,执行awk时,它依次对输入文件中的每一行执行花括号中的代码,如上面的例子,就是对hello.txt中的每一行执行print命令。所有输出都发送到stdout,最后在屏幕上显示的结好握首果为“Hello world!”。
上面的例子是将脚本作为命令行自变量传递给awk,我们也可以把脚本写入一个外部文件,然后通过-f选项向awk传递这个脚本文件。例如编写脚本文件hello.ask如下:
{ print }
然后通过如下方式执行:
$ awk -f hello.awk hello.txt
这种编写独立脚本文件的方式应用在多行、比较复杂的程序上,非常合适,而且,在后面你还将看到,这种方式还可以让你非常方便地使用附加awk功能。
这枝桐余个。。。太多了。如果在这里就能说清楚,那么其本身功能的强大性就值得质疑。
只能推荐一些电子书(轮余网上都可以找到)和学习链接给猛滚你:
Unix awk使用手册(第二版).doc
Awk – An Introduction and Tutorial.doc
详解著名的awk_oneliner.pdf
通用线程: awk 实例:
man awk
一、awk if分支结构
二、awk数组 for循环
一、awk if分支结构
案例1
awk过滤中的if分支结构
1)单分支
统计/etc/passwd文件中UID小于或等于1000的用户个数:
统计/etc/passwd文件中UID大于1000的用卜前户个数:
统计/etc/passwd文件中登录Shell是“/bin/bash”的用户个数:
2)双分支
分别统计/etc/passwd文件中UID小于或等于1000、UID大于1000的用户个数:
分别统计/etc/passwd文件中登录Shell是“/bin/bash”、 登录Shell不是“/bin/bash”的用户个数:
二、awk数组
注意,awk数组的下标除了可以使用数字,也可以使用字符串,字符串需要使用双引号:
案例3:awk扩展应用
1)awk统计Web访问排名
在分析Web日志文件时,每条访问记录的之一列就是客户机的IP地址,其中会有很多重复的IP地址。因此只用awk提取出这一列是不够的,还需要统计重复记录的数量并且进行排序。
通过awk提取信息时,利用IP地址作为数组下标,每遇到一个重复值就将此数组元素递增1,最终就获得了这个IP地址出现的次数。
针对文本排序输出可以采用sort命令,相关的常见选项为-r、-n、-k。其中-n表示按数字顺序升序排列,而-r表示反序,-k可以指定按第几个字段来橘李排序
实现此案例需要按照如下步骤进行。
步骤一:统计Web访问量排名
分步测试、验证效果如下所述。
1)提取IP地址及访问量
2)对第1)步的结果根据访问量排名
案例4:编写监控脚本
本案例要求编写脚本,实现计算机各个性能数据监控的功能,具体监控项目要求如下:
CPU负载
网卡流量
内存剩余容量
磁盘剩余容量
计算机账户数量
当型伍清前登录账户数量
计算机当前开启的进程数量
本机已安装的软件包数量
步骤
实现此案例需要按照如下步骤进行。
步骤一:准备工作
1)查看性能数据的命令
步骤二:编写参考脚本
1)脚本内容如下:
awk linux语法的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于awk linux语法,简单易学:AWK Linux语法入门,linux中的awk用法,linux shell中awk的用法,Linux awk 命令详解(二) if 分支 数组的信息别忘了在本站进行查找喔。
成都服务器租用选创新互联,先试用再开通。
创新互联(www.cdcxhl.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。物理服务器托管租用:四川成都、绵阳、重庆、贵阳机房服务器托管租用。
名称栏目:简单易学:AWK Linux语法入门 (awk linux语法)
链接分享:http://www.csdahua.cn/qtweb/news20/539970.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网