使用awk统计字段重复实践
awk
awk是一种规格化文件的分析工具, 主要处理对象类似数据库导出的条目文本文件, 其中一行,就对应一个记录,每个记录包含若干个字段。
类似这种文本:
[root@www ~]# last -n 5 <==仅取出前五行
root pts/1 192.168.1.100 Tue Feb 10 11:21 still logged in
root pts/1 192.168.1.100 Tue Feb 10 00:46 - 02:28 (01:41)
root pts/1 192.168.1.100 Mon Feb 9 11:41 - 18:30 (06:48)
dmtsai pts/1 192.168.1.100 Mon Feb 9 11:41 - 11:41 (00:00)
root tty1 Fri Sep 5 14:09 - 14:10 (00:01)
本文利用awk工具实现 字段重复的统计功能, 例如某个字段不是主键,但是需要检测其值的重复性。
具体参考资料:
http://www.cnblogs.com/51linux/archive/2012/05/23/2515308.html
http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html
http://www.gnu.org/software/gawk/manual/gawk.html
问题提出
对于一个lua表文件, 为了避免lua表中,新添加的 key = value, 如果key已经在表中存在, 则新添加的条目在其后,则会将前面已经写过的key覆盖掉, 导致key的value值被改变。
例如如下表:
-- 这是个lua table。
luatable = {
--********************START覆盖标签区*****
--********************END 覆盖标签区*******
LANG = [[xxx]],
LANG = [[xxx]]
public_001 = [[ooo]],
public_002 = [[,,,,,]],
public_003 = [[sss]],
public_004 = [[eeee]],};
方案给出
上面表文件,中包含 每个条目, key = value, 是我们需要处理的目标
但是其中也有表定义行 和 注释行 , 需要在处理过程中舍弃掉。
写一个awk文件, testdup.awk, 使用awk调用文件方式执行此文件。
BEGIN{
print "statistic duplicate ID starts";
count = ;
FS = "=";
}
/(.+)=[[:blank:]]*\[\[.*\]\]/ {
count ++;
print $;
printf("key=%s", $);
if ( keyTimes[$] )
{
keyTimes[$] = keyTimes[$] + ;
}
else
{
keyTimes[$] = ;
}
}
END{
print "statistic duplicate ID ends";
printf("count = %d\n", count);
printf("total row NR = %d", NR);
for ( key in keyTimes )
{
if (keyTimes[key] > )
{
printf("key(%s) duplicated times=%d", key, keyTimes[key]);
}
}
}
命令行执行:
awk -f testdup.awk lang.conf
执行效果:
.......
statistic duplicate ID ends
count = 1986
total row NR = 2289key(LANG ) duplicated times=2
使用awk统计字段重复实践的更多相关文章
- awk过滤统计不重复的行
awk以‘\t’为分隔符区分列 cat logs | grep IconsendRedirect | grep 1752 | awk -F'\t' '{print $8}'| wc -l awk过滤统 ...
- sqlserver中分区函数 partition by与 group by 区别 删除关键字段重复列
partition by关键字是分析性函数的一部分,它和聚合函数(如group by)不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录, partition by ...
- **SQL某一表中重复某一字段重复记录查询与处理
sql某一表中重复某一字段重复记录查询与处理 1.查询出重复记录 select 重复记录字段 form 数据表 group by houseno having count(重复记录字段)> ...
- python统计元素重复次数
python统计元素重复次数 # !/usr/bin/python3.4 # -*- coding: utf-8 -*- from collections import Counter arr = [ ...
- MyBatis 多表联合查询,字段重复的解决方法
MyBatis 多表联合查询,两张表中字段重复时,在配置文件中,sql语句联合查询时使用字段别名,resultMap中对应的column属性使用相应的别名: <resultMap type=&q ...
- Access删除某一字段重复的数据但是要保留一条
如下图所示,Checktime这个字段有很多重复数据,我需要把所有Checktime这个字段重复的都删掉,但是还需要保留一条: 在Access做删除查询怎么做呀,来个Access高手,复制粘贴党请手下 ...
- mysql 删除单表内多个字段重复的数据
mysql 删除单表内多个字段重复的数据 DELETE from lot_log_payflow WHERE (pay_no,sub_flow_type) in () s1) AND id ) s2) ...
- awk 统计
命令太多,记不住,组合起来用一把…..示例文件: 1 2 3 4 5 6 7 8 9 10 11 [root@lovedan test]# cat a.txt hello good world hel ...
- mysql查询某个字段重复的数据
查询某个字段重复的数据 ; 查询股票重复的营业厅 ;
随机推荐
- Klayge 引擎的安装
http://www.klayge.org/wiki/index.php?title=%E4%BE%8B%E5%AD%90%E7%A8%8B%E5%BA%8F&redirect=no& ...
- 运维工程师必会的109个Linux命令
运维工程师必会的109个Linux命令 版本1.0 崔存新 更新于2009-12-26 目录 1 文件管理 6 1.1 basename 6 1.2 cat 6 1.3 cd 7 1.4 chgrp ...
- jQuery之换肤与cookie插件
有时候一个网页可以有多个皮肤进行选择,也就是不同的背景,或是一整套新的css,能使整个页面变成另一种风格. 这个功能可以用jQuery来实现.外加cookie插件.有了cookie,就可以长时间的保存 ...
- TabHost详解
[转]http://blog.csdn.net/harvic880925/article/details/17120325 前言:今天仔细研究了下TabHost,主要是为了实现微信底部导航栏的功能,最 ...
- SVM神经网络的术语理解
SVM(Support Vector Machine)翻译成中文是支持向量机, 这里的“机(machine,机器)”实际上是一个算法.而支持向量则是指那些在间隔区边缘的训练样本点[1]. 当初看到这个 ...
- C# where(泛型类型约束)
/*在泛型类型定义中,where 子句用于指定对下列类型的约束:这些类型可用作泛型声明中定义的类型参数的实参. 例如,可以声明一个泛型类 MyGenericClass,这样,类型参数 T 就可以实现 ...
- Qt 之 自定义窗口标题栏(非常完善)
http://blog.csdn.net/goforwardtostep/article/details/53494800
- 【Java 基础篇】【第一课】HelloWorld
有点C++基础,现在需要快速的学会java,掌握java,所以就这样了,写点博客,以后看起来也好回顾. 1.第一步 javaSDK和Eclipse下载就不说了,搞定了这两样之后: 2.打开Eclips ...
- 报javax.servlet.ServletException: Servlet.init() for servlet springmvc threw exception异常 的解决方案
后台错误信息如下: javax.servlet.ServletException: Servlet.init() for servlet springmvc threw exception org.a ...
- aspx页面Page_Load和aspx页面上控件Page_Load事件执行顺序
今天公司的同事问了我一个问题,就是页面的Load方法和控件上的Load方法执行顺序的问题,看完了这个图片的递归调用之后大家就笑了,吼吼.