学习Linux的AWK命令:掌握Begin和End的使用技巧 (linux awk begin end)

AWK命令是一种文本处理工具,通常用于在Linux系统中对文本数据进行过滤、格式化和统计等操作。其中,Begin和End是AWK命令中的两个特殊操作,它们可以帮助我们在处理文本数据时更加高效和灵活地实现我们的需求。本文将介绍如何掌握Begin和End的使用技巧,让你在学习和使用AWK命令时更加得心应手。

一、Begin操作的使用技巧

Begin操作是AWK命令中的一个特殊操作,它表示在处理文本行之前执行的操作。我们可以利用该操作来进行一些初始化设置,例如打印表头、初始化变量等。下面是一个示例:

aw ‘{BEGIN{print “ID\tName\tScore”}}’

上述代码表示在处理文本数据之前,先打印出一个表头,其中ID、Name和Score分别代表着数据的三个字段。

除了可以打印表头,Begin操作还可以进行其他一些设置。例如,我们可以在这里使用变量并初始化它。下面是一个示例:

awk ‘{BEGIN{count=0;}}/pattern/{count++}END{print count;}’ file.txt

上述代码表示在处理文本数据之前,先初始化变量count并将它赋值为0。接着,在每一行数据中查找pattern,并使count加一。利用End操作打印count的值。

二、End操作的使用技巧

End操作是AWK命令中的另一个特殊操作,它表示在处理文本行结束后执行的操作。我们通常可以在该操作中进行一些最终的计算、输出结果等工作。下面是一个示例:

awk ‘{sum+=$1} END {print “Sum = “, sum}’ numbers.txt

上述代码表示在处理文本数据结束后,计算所有数据的和并打印出来。其中,$1表示数据中的之一个字段,sum表示所有数字的总和。

除了可以进行计算和结果输出之外,End操作还可以进行其他一些工作。例如,我们可以在这里输出更大或最小值、输出平均值等。下面是一个示例:

awk ‘BEGIN {max = 0} {if ($1>max) max=$1} END {print “Max =”, max}’ numbers.txt

上述代码表示在处理文本数据结束后,输出所有数字中的更大值。其中,max变量用于保存更大值,if语句用于寻找新的更大值。

三、其他使用技巧

除了掌握Begin和End的使用技巧之外,还有一些其他的使用技巧可以帮助我们更好地处理文本数据。下面是一些示例:

1. 字段分割

有时候,文本数据中的各个字段是以某种特殊的符号(例如逗号、冒号等)进行分割的。我们可以使用AWK命令的-F选项来设置字段分隔符。例如,下面的代码表示将逗号作为文件ms.csv中字段的分隔符:

awk -F ‘,’ ‘{print $1,$4}’ ms.csv

上述代码表示打印出文件ms.csv中之一个字段和第四个字段。

2. 条件过滤

有时候,我们只需要处理满足某些条件的数据行。我们可以在AWK命令中使用条件判断语句来实现这一目标。例如,下面的代码表示只处理分数大于80的行:

awk ‘$3>80’ scores.txt

上述代码表示输出文件scores.txt中分数大于80的数据行。

本文介绍了学习Linux的AWK命令中Begin和End的使用技巧,并提供了一些其他的使用技巧。通过掌握这些技巧,我们可以更加高效地处理文本数据,提高我们的工作效率。

相关问题拓展阅读:

  • Linux的awk、grep、sed工具,实现文本查找、编辑 、格式化
  • Unix & Linux的文本处理工具 — grep, sed & awk
  • Linux下批量获取文件夹的子文件的所有图片的文字

Linux的awk、grep、sed工具,实现文本查找、编辑 、格式化

awk、grep、sed是linux文本操作的三大利器,grep适合单纯的查找或文本匹配,sed适合编辑匹配到的文本,awk适合格式化文本,对文本进行较复杂格式处理。

命令格式:grep pattern file 用于过滤/搜索的特定字符,可与正则表达式配合,使用上十分灵活。

命令格式:sed ‘ command’ file(s) 用于编辑一个或多个文件, 简化对文件的反复操作。

演示实例:

命令格式:awk ‘BEGIN{ action;… } pattern{ action;… } END{ action;… }’ file … 用于在linux下对文本和数据进行处理,数据可以来自一个或多个文件,支持用户自定义函数和动态正则表达式等功能。

演示实例:

a.随机取用户

cat file1 | awk ‘{ print rand(),$1 }’ |sort -k1 |awk ‘{ print $2 }’ |head

b.分组求和

awk ‘{s += $2}END{ for(i in s){ print i, s } }’ file1 > file2

c.求和

cat data|awk ‘{sum+=$1} END {print “Sum = “, sum}’

d.求平均

cat data|awk ‘{sum+=$1} END {print “Average = “, sum/NR}’

e.求标准偏差

cat $FILE | awk -v ave=$ave ‘扰绝{sum+=($1-ave)^2}END{print sqrt(sum/(NR-1))}’

f.列换成行,如果之一列相同,将所有的第二列 第三列 都放到一行里面

awk ‘正宽{qq=qq(” “$2” “$3)}END{for(i in qq)print i,qq}’

g.合并文件,2个文件,每个2列,将举李亮他们按照之一列相同的数,来合并成一个三列的文件,同时,将每个文件中针对之一列对应第二列中没有的数补0

Unix & Linux的文本处理工具 — grep, sed & awk

当大家看到标题时脑中闪过的大概是铺天盖地baidu, google出来的冗余的各类使用介绍,老生常谈希望能让大家对这三个文本工具有新的理解。

grep不做过多的介绍, 打印出匹配的行, 着重点在于输出结果并不对文本本身做修改。

有个关于grep的小故事, 从sed和grep能追溯到最初的unix行编辑器ed而grep的命名代表 g(全局)/re(正则表达式)/p(打印)正是ed中全局打印行匹配的语法. grep自身的劣势在于无法实现多行匹配, 这时sed和awk相继出现弥补了grep的不足。

在进入sed的相关讨论之前,先就sed跟awk之间进行简单的比较。

可使用指定的脚本文件对相应文本进行编辑。

sed -f ‘script filename’ or stdin

awk -f ‘script filename’ or stdin

默认敬饥慎全局匹配并且拥有自身的主输入循环。

除去肢绝影响控制流的命令或语句(sed中: t,b; awk中continue,break等)默认对文本的每一读取的行依次执行相应的命令或语句。

awk相较于文本编辑工具更像是一门语言,awk条件、循环、判断语句有显性的标识(if,while,for…);而sed只存在单一的判断逻辑(参考b label,t label)。

取出upstream awk_test对应的配置块:

Solution1:

Solution2:

相较之下Solution 2不需要复杂的判断,只需通过寻址来匹配并打印相应的文本;Solution 1更适合于进行多行匹配并替换。另一方面,Solution 1中sed通过创建多行空间模式并输出,而awk通过修改记录分隔符来实现多行匹配的不同。

awk拥有系统变量(FS,RS,OFS,ORS…)、内置函数、数组数据结构、传参(-v var=value)、引用系统命令(通过system() getline() close()函数)等。

awk除去主输入循环还存在BEGIN和END过程,用于某些在处理输入之前或者处理输入完成之后的操作。

sed也有过人之处,如果对sed的工作模式进行深入了解,会发现有一个叫做保持空间(hold space)的东西,下图大体描述了sed的工作模式,并且阐述了模式空间(pattern space)跟保持空间(hold space)之间的联系。模式空间跟保持空间中的内容可进行删除,交换等。

sed的指令集都是单一的字母,并且有option可直接修改文件。而awk可能需要指定内置变量的值,或是通过输出重定向保存为新的文件。

综上所述:

grep适用于单行匹配打印的场景;

sed适用于多行模式的替换的场景;

awk适合更多的逻辑表达式并输出的场景。

但三个命令都需要文本格式统一化的大前提,对于一个文本中的多种格式,可以亮敬先将同一种格式的内容整理到文件中,再将其他格式再分别整理到新的文件中。

统一文本格式固然重要,能准确匹配意图的正则表达式也必不可少,这也是大家头疼的部分。如若有机会,我会再跟大家介绍文本匹配中磨人的小妖精——正则表达式。它在不同的命令中、语言中支持不同的标准,更易于与Unix-like系统的file globbing混淆,常常让人咬牙切齿,欲罢不能。

Linux下批量获取文件夹的子文件的所有图片的文字

任务要求

:批量获取指定文件夹内所有的子目录结构的图片的文字,输出时按照各燃迹消皮知级目州核录空一个输出。

例如:motifs/prodfi/noden/pic.png

解决方法

计算文件大小

du -sh 查看当前目录的大小

df -h 查看主机所有盘的空间情况

du -h 查看当前目录下所有文件的大小

ls -lh *.sam|awk ‘BEGIN{sum=0}{sum=sum+$5}END{print sum} 查看当前目录sam文件的总大小。

linux awk begin end的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux awk begin end,学习Linux的AWK命令:掌握Begin和End的使用技巧,Linux的awk、grep、sed工具,实现文本查找、编辑 、格式化,Unix & Linux的文本处理工具 — grep, sed & awk,Linux下批量获取文件夹的子文件的所有图片的文字的信息别忘了在本站进行查找喔。

香港服务器首选树叶云,2H2G首月10元开通。
树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/205351.html<

(0)
运维的头像运维
上一篇2025-04-07 14:03
下一篇 2025-04-07 14:04

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注