awk结合正则匹配

焦距 焦距     2022-09-12     294

关键词:

利用awk分析data.csv中label列各取值的分布.

在终端执行head data.csv查看数据:

1 name,business,label,label_name
2 沧州光松房屋拆迁有限公司,旧房拆迁、改造;物业服务(依法须经批准的项目,经相关部门批准后方可开展经营活动),E4,建筑装饰和其他建筑业
3 上海托帕化工材料有限公司,"从事化工材料领域内的技术开发、技术转让、技术咨询、技术服务、化工原材料及产品(除危险化学品、监控化学品、烟花爆竹、易制毒化学品、民用爆炸物品)、机械设备、电子产品、橡塑制品、机电设备、五金建材、日用百货的销售,从事货物及技术的进出口业务。
4 【依法须经批准的项目,经相关部门批准后方可开展经营活动】",F2,零售业
5 上海利昂节能灯具有限公司,节能灯管,节能灯配件,电子镇流器,灯具,电子产品,生产,加工,C26,电气机械和器材制造业
6 裕福支付有限公司海南分公司,"企业管理咨询,计算机数据处理,应用软件技术服务,会议服务,经济信息咨询",L2,商务服务业
7 龙川县联生农贸市场管理中心,自建农贸市场管理服务,L2,商务服务业

 

因为行内包含换行符的项会被分成多行(例如上面的第3,4行),所以需要结合正则匹配

cat data.csv | awk -F ',' '{if(NF>2 && $(NF-1)~/^[A-Z][0-9]/) {print $(NF-1)}}' | sort | uniq -c | sort -n -r > label_distribution.txt

-F ',' 表示根据逗号分隔;

$(NF-1)~/^[A-Z][0-9]/ 表示分隔后的倒数第二项(在此指取label列的值)需满足指定的正则匹配规则

 

另外,利用Pandas库对csv格式的文件做统计也很方便.

用pandas读取数据:

 

print df.label.value_counts()
"""
F1     622844
L2     614734
F2     493420
A1     102186
...
"""

value_counts()方法统计序列所有元素出现次数,并进行倒序.

 

awk从入门到入土正则匹配(代码片段)

awk的pattern除了使用简单的条件表达式之外,还可以用正则表达式。AWK可以方便高效地处理正则表达式。大量复杂的任务都可以由极其简单的正则表达式来解决。每一个精通命令行的人都知道正则表达式真正的威力所在。这一... 查看详情

awk-模式匹配

使用awk作为文本处理工具,正则表达式是少不了的。要掌握这个工具的正则表达式使用。其实,我们不必单独去学习它的正则表达式。正则表达式就像一门程序语言,有自己语法规则已经表示意思。对于不同工具,其实大部分表... 查看详情

awk使用正则精确匹配

[[email protected]home]#catfile5001][YRSD5-1][YRSD5-1-2][0203008400028411]0101025001][YRSD7-1][YRSD7-1-2][0203008400028411]0101025001][YRSD5-1][YRSD5-1-20][14030084000286E7]0101015001][YRSD7-1][Y 查看详情

正则表达式

...示“非”的意思[abc]表示可匹配的字符序列为abc;与上条结合,[^abc]表示可匹配除了abc之外的字符模式匹配命令grepe.g.:echo‘hello,shiyanlou‘|greppattern流编辑器sedawk文本处理语言awk 查看详情

匹配 AWK 中多行的正则表达式。 && 操作员?

】匹配AWK中多行的正则表达式。&&操作员?【英文标题】:MatchingregexofmultiplelinesinAWK.&&operator?【发布时间】:2012-09-2423:13:16【问题描述】:我不确定&&运算符是否适用于正则表达式。我要做的是匹配一行,使其以数... 查看详情

如何使用 awk 命令在匹配正则表达式之前和之后打印 5 行

】如何使用awk命令在匹配正则表达式之前和之后打印5行【英文标题】:Howtoprint5linesbeforeandafterthematchregexwithawkcommand【发布时间】:2020-07-1709:35:42【问题描述】:我想使用awk打印匹配正则表达式之前的5行和之后的5行(以ERROR开始... 查看详情

awk正则匹配指定字段次数统计

1.文本数据 head12315_industry_business.csvname,business,label,label_name沧州光松房屋拆迁有限公司,旧房拆迁、改造;物业服务(依法须经批准的项目,经相关部门批准后方可开展经营活动),E4,建筑装饰和其他建筑业上海托帕化工材料有限... 查看详情

awk命令

...理:BEGINawk_cmd1;awk_cmd22、行处理:定址命令定址方法:正则、变量、比较和关系运算正则需要用//包围起来awk-F:\'/root/print\'gadawk-F:\'$1~/root/print\'gad第一列匹配awk-F:\'$1~/<root>/print\'gad第一列匹配,锁定字符串匹配awk-F:\'$1!~/root/p... 查看详情

sed / awk 匹配文件中第二次出现的正则表达式,并替换整行

】sed/awk匹配文件中第二次出现的正则表达式,并替换整行【英文标题】:sed/awkmatchsecondoccurrenceofregexinafile,andreplacewholeline【发布时间】:2022-01-0617:47:05【问题描述】:尝试让sed或awk执行以下操作:浏览文件捕获字符串+正则表达... 查看详情

find、grep、sed、awk的使用

....输出匹配行的前后几行grep"^####"zabbix_server.conf-C33.结合tr实现大小写字母转换4.实现既输出匹配路径又显示匹配结果5.[root@localhosttest]#grep":"zabbix_server.conf|cut-d:-f2cut的用法:-d以什么来分割-f取分割后的第几段取出最... 查看详情

awk one-liner 仅替换第一个匹配的正则表达式出现的文本

】awkone-liner仅替换第一个匹配的正则表达式出现的文本【英文标题】:Awkone-linertoreplacetextoffirstmatchingregexoccurenceonly【发布时间】:2015-09-0603:23:15【问题描述】:我需要这个awk命令将文本中第一个XML标记中的ss:Width="252"替换为ss:Wid... 查看详情

正则三剑客grep,sed,awk复习记录

正则表达式字符列表:\\转义字符(ex:"\\/home\\/test\\/"表示"/home/test").匹配任意单个字符(ex:"a.b"可匹配"aab""abb""acb"....)*匹配在它之前一个字符的任意个数或0个(ex:"a... 查看详情

awk进阶

整理的awk的小技巧begin是要放在正则前面的,按照这个顺序:awk‘begin{}/.*?/{action}end{}‘fileFS=‘:‘和-F:是等同的for循环和便利数组,for(i=0;i<10;i++)printi,ENVIRON[i]或者for(iinARGV){printi,ARGV[i]}匹配正则表达式if(a~/^100*/)不匹配if(a~!/^100*/... 查看详情

正则表达式基础

/abc/  双斜杆表示里面是正则表达式在awk中使用方法:awk‘/a.c/print$0‘data.txt.和\awk‘/a.c/print$0‘data.txt使用a.c表达式去匹配data.txt数据。点表示一个字符,多个点表示多个字符awk‘/a\.c/print$0‘data.txt 匹配a.c表达式,反... 查看详情

如何 grep/perl/awk 重叠正则表达式

】如何grep/perl/awk重叠正则表达式【英文标题】:Howtogrep/perl/awkoverlappingregex【发布时间】:2021-11-2606:15:58【问题描述】:尝试将字符串通过管道传输到grep/perl正则表达式中以提取重叠匹配项。目前,结果似乎只提取了没有任何“... 查看详情

正则表达式结合实例简单梳理

...个字符串,当满足这个规则,就认为此字符串匹配成功。结合各个语言中的不同方法,可以返回匹配成功true、false或者匹配的字符串等。    本文对正则表达式做一个简单的知识梳理,结合一些小例子来加深印象。... 查看详情

如何使用 sed、awk 或 gawk 仅打印匹配的内容?

...索和替换等操作的示例和手册页。但就我而言,我有一个正则表达式,我想针对文本文件运行它以提取特定值。我不想做搜索和替换。这是从bash调用的。举个例子:正则表达式示例 查看详情

awk正则去掉回车换行

...dfbbb我想取出1123-04而且想要它后面没有回车,我要怎么写正则表达式呀??参考技术A详细说明一下要取的规律及需要的结果以及其保存方式吧,你这样问很含糊啊就这里的话,尝试按照你的说明来:match($0,/aefdd([0-9-]+)$/,want);print... 查看详情