利用Linux Awk技巧,简单高效地提取数字 (linux awk 提取数字)

在日常的数据处理中,经常需要从文本中提取数字,并对其进行统计、计算等操作。但是,文本文件中的数字往往夹杂着大量无用的字符,如字母、符号等,而手动处理这些数字不仅繁琐而且易出错。那么,如何呢?

一、初识Linux Awk命令

1.1 什么是Awk命令

Awk命令是在Unix和Linux常用的一个文本处理工具,可以将文本内容按照指定的规则进行匹配、查找、处理等操作。其基本语法如下:

“`awk ‘pattern { action }’ filename“`

其中,pattern表示匹配模式,action表示匹配成功后执行的操作,filename表示要处理的文件名。通常,Awk命令会自动读取标准输入,即键盘输入或文件输入。

1.2 Awk命令的基本功能

在使用Awk命令时,需要掌握一些基本的功能和概念:

– 分隔符:Awk命令默认的分隔符是空格和制表符,可以使用-F参数指定自定义分隔符;

– 字段:Awk命令将每一行文本按照分隔符分割成若干个字段,可以使用$1、$2等表示第1、2个字段;

– 模式匹配:可以使用正则表达式对文本进行模式匹配;

– 操作符:可以使用简单的四则运算等操作符对字段进行计算;

– 变量:Awk命令内置了一些变量,如NR表示当前行号,NF表示当前行的字段数等。

二、利用Awk命令提取数字

在使用Awk命令提取数字时,通常需要按照以下步骤进行:

2.1 根据需求制定匹配模式

根据要提取的数字的特征制定匹配模式。例如,要提取文本中的所有整数,可以使用正则表达式`/[0-9]+/`。

2.2 使用Awk命令进行匹配

然后,使用Awk命令进行匹配,找到符合模式的文本内容。例如,使用以下命令可以从名为input.txt的文件中找到所有整数:

“`awk ‘/[0-9]+/ { print $0 }’ input.txt“`

其中,`/[0-9]+/`表示匹配所有整数,`print $0`表示将匹配到的整行输出。

2.3 提取匹配结果中的数字

从匹配结果中提取数字。由于匹配结果包含了大量的其他字符,需要使用Awk命令的计算功能将数字提取出来。例如,使用以下命令将匹配结果中的数字相加:

“`awk ‘/[0-9]+/ { sum+=$0 } END { print “Total: “, sum }’ input.txt“`

其中,`sum+=$0`表示将匹配到的数字相加并赋值给变量sum,`END { print “Total: “, sum }`表示在处理完整个文件后输出变量sum的值。

三、实战案例:提取日志中的响应时间

下面通过一个实战案例来演示如何利用Awk命令提取日志中的响应时间。

假设有以下日志文件log.txt:

“`

2023-05-01 12:00:01 INFO: Request 1 – Start

2023-05-01 12:00:02 INFO: Request 1 – End (time=100ms)

2023-05-01 12:00:03 INFO: Request 2 – Start

2023-05-01 12:00:04 WARN: Request 3 – Timeout

2023-05-01 12:00:05 INFO: Request 2 – End (time=120ms)

2023-05-01 12:00:06 INFO: Request 3 – Start

2023-05-01 12:00:07 INFO: Request 3 – End (time=150ms)

“`

要求从中提取出所有响应时间,并计算平均响应时间。

步骤如下:

3.1 制定匹配模式

根据日志格式,响应时间的格式为`(time=xxxms)`,因此制定匹配模式为`/(time=[0-9]+ms)/`。

3.2 使用Awk命令进行匹配

使用以下命令匹配响应时间:

“`awk ‘/(time=[0-9]+ms)/ { print $0 }’ log.txt“`

其中,`/(time=[0-9]+ms)/`表示匹配响应时间,`print $0`表示将匹配到的整行输出。

3.3 提取匹配结果中的数字并计算

使用以下命令将匹配结果中的数字相加,并统计平均响应时间:

“`awk ‘/(time=[0-9]+ms)/ { sum+=$0; count++ } END { print “Total: “, sum; print “Average: “, sum/count }’ log.txt“`

其中,`sum+=$0`表示将匹配到的响应时间相加并赋值给变量sum,`count++`表示统计响应时间个数,`END { print “Total: “, sum; print “Average: “, sum/count }`表示在处理完整个文件后输出变量sum和平均值。

最终输出结果为:

“`

Total: 370ms

Average: 123.333ms

“`

四、

本文介绍了利用Linux Awk技巧进行数字提取的方法,主要包括制定匹配模式、使用Awk命令进行匹配、提取匹配结果中的数字三个步骤。同时,通过实战案例展示了如何从日志中提取响应时间,并计算平均响应时间。Awk命令具有灵活高效的文本处理能力,值得我们在日常工作中多加应用和深入学习。

相关问题拓展阅读:

  • 如何在Linux中使用awk命令

如何在Linux中使用awk命令

awk实例

1、cat /etc/passwd|awk -F: ‘{print $1}’

2、linux的awk一般都是gawk,/bin/awk -> gawk

3、awk ‘/abc/’ file.txt 显示文件中包含abc行。类似grep abc a.txt

4、awk ‘{print NR,NF,$1,$NF,}’ file.txt按空格分隔列,显示当前记录号、域数和每一行的之一列和最后一列。

-F参数可以设置分割参数,例如按:分割

awk -F: ‘{print $1}’ /etc/passwd

或者cat file|awk -F “|” ‘{print $1}’

5、awk编程语言

cat v.txt|awk ‘{print length($1)}’

6、awk中使用NR和FNR,一般在awk处理多个文件时,NR==FNR才有意义

NF 当前记录中的字段数。

NR 当前型磨记录数。

FNR同NR,但相对于当前文件。

awk ‘{print NR,FNR}’ test.txt test2.txt

awk ‘{if(NR==FNR){a=$1;}else{print $1,a}}’ b.txt a.txt

7、打此租备印奇数行与偶数行

awk ‘NR%2’ test.txt

awk ‘!(NR%2)’ test.txt

8、杀死森毁tomcat的stop.sh脚本

#!/bin/sh

ps -ef| grep tomcat |grep -v grep | awk ‘{print $2}’ |xargs kill -9

9、打印前7列

cat a.txt|awk ‘{NF=7}1’ >> b.txt

tail -f access.log|awk ‘NF=7′ OFS=’\t’ >> b.txt

cut -d”,” -f3-6 urfile

awk:用于缓脊吵一行中分成数个“字段”来处理。适合处理

小型数据。

运行模式:awk

‘条件类型1{动作1}

条件类型2{动作2}

…’

filename

#

last

|

awk

‘{print

$1

“\t”

$3}’

大于

=

大于或等于

小于或等于

==

等于

!=

不等于

范例:

cat

/etc/passwd

|

awk

‘{FS=”:”}

$3

{print

$1

“\t”

$3}’

文件/etc/passwd是以”:”分隔的,查看第三栏小于10的数据,并且只显示帐号与第三栏

关于linux awk 提取数字的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

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

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

(0)
运维的头像运维
上一篇2025-04-02 11:06
下一篇 2025-04-02 11:08

相关推荐

  • 个人主题怎么制作?

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

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

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

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

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

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

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

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

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

    2025-11-20
    0

发表回复

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