awk 对比两个文件中的数据项,输入到新文件
来源:互联网 发布:信号屏蔽软件下载 编辑:程序博客网 时间:2024/05/18 16:15
http://zhidao.baidu.com/link?url=hdKrZSO1MeW_CFUfMtDBY1aOYs5u1JwxISH5y7akigSacoH15lyThYNwYfoh1xMv0DF1Y5ngLnGcpgrq0IVznI1uLcnGy5ugMyi5lnlMd9_
用awk数组来做。
追答:
我本地试过没问题,所以怀疑是不是file1和file2的格式问题。先用dos2unix转一下格式看看。
谢谢参与解答,awk相关问题。现有两个文件,内容样式如下1420862364.685037 50365 seq 11608:130561420862364.777130 50366 seq 13056:145041420862364.777142 50367 seq 14504:159521420862364.778324 50368 seq 15952:174001420862364.778332 50369 seq 17400:188481420862364.780798 50370 seq 18848:202961420862364.780810 50371 seq 20296:21744省略x万行第一列是时间(unix),第二列是ip数据包id,第三列是数据包类型,第四列是数据包内数据序列号。文件file1来自发信端,文件file2来自收信端,因此两个文件中的数据大致类似,除了file2的时间部分可能会有迟延上的变化,而且某些时候会因为丢包,部分数据行丢失。现在要求,对比file1和file2,根据id列区分数据包,输出file1中的时间1和file2中的时间2到新文件,样式如下1420862364.881564 1420862365.881564 50391 seq 49256:50704对于丢包(即file2中没有找到与file1中相同id行的情况),在time2的位置上输出x字样1420862364.881564 x 50391 seq 49256:50704要求写出简单的处理思路,带适当注释,用awk实现。全部符合条件的加20点分数。++++++++++++++++++++++++++++
用awk数组来做。
点击(此处)折叠或打开
- awk 'ARGIND==1 {w[$2]=$1}
- ARGIND==2 {
- flag=0;
- for(a in w)
- if($2==a) {
- flag=1;
- print $1,w[a],$2,$3,$4;
- break;
- }
- if(!flag)
- print $1,"x",$2,$3,$4
- }' file2 file1
ARGIND==1 表示处理的是第一个文件 file2
ARGIND==2 表示处理的是第二个文件 file1
原则是:内容较少的文件先处理,遍历读入并保存到数组,以要比较的值为数组下标(这里就是第二列的id值),需要打印显示的内容存为对应的元素值(这里就是第一列的时间值)。然后再处理内容较多的文件,对其每一行内容都使用for循环遍历数组下标进行比较。
这里设置了一个flag来标识file1中的id在数组中(file2中)是否存在。
由于你的数据文件有上万行,所以速度肯定快不了。
追问:
谢谢解答,意思基本看懂了,但是在终端上运行没有结果,我尝试输出到file3,但是enter之后一瞬间就回到提示符了,file3是空文件。请再帮帮忙。
点击(此处)折叠或打开
- dos2unix file1 file2
- awk 'ARGIND==1 {w[$2]=$1}
- ARGIND==2 {
- flag=0;
- for(a in w)
- if($2==a) {
- flag=1;
- print $1,w[a],$2,$3,$4;
- break;
- }
- if(!flag)
- print $1,"x",$2,$3,$4;
- }' file2 file1 >file3
0
上一篇:安装processmaker-3.0—worker—super—manager—APPLICATION表
下一篇:(OK) 刘姐实验中的大数据分析—awk—paste—system
相关热门文章
- linux 常见服务端口
- xmanager 2.0 for linux配置
- 【ROOTFS搭建】busybox的httpd...
- openwrt中luci学习笔记
- 什么是shell
- linux dhcp peizhi roc
- 关于Unix文件的软链接
- 求教这个命令什么意思,我是新...
- sed -e "/grep/d" 是什么意思...
- 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
0 0
- awk 对比两个文件中的数据项,输入到新文件
- awk 合并两个文件
- awk 输入文件
- xcode对比两个分支中的同一个文件
- 两个文件对比 C#
- vi对比两个文件
- 两个数据库文件对比
- 文件中的awk 命令
- 用python实现两个文件中的数据对比
- python处理文件效率对比awk
- awk更新现有文件内容并输出到新文件中
- awk 输出到不同文件
- 两个XML文件进行对比
- 复制两个文件中的内容到一个文件中
- 文件输入/输出函数对比
- 如何将多个输入文件合并到hadoop中的一个文件
- awk对两个文件的比较
- awk数组处理两个文件的例子
- oryx-editor—Web-based Graphical Business Process Editor
- 安装processmaker-3.0—创建的表
- Android深入浅出之Binder机制
- 安装processmaker-3.0—worker—super—manager—APPLICATION表
- ORA-12505,TNS:listener does not currently know of SID given in connect descriptor
- awk 对比两个文件中的数据项,输入到新文件
- [leetcode] 241. Different Ways to Add Parentheses
- Python Class之间函数的调用关系
- (OK) 刘姐实验中的大数据分析—awk—paste—system
- 指定数组中的数据比大小
- Using JsonCpp in your project
- 在Node.js 中用 Q 实现Promise – Callbacks之外的另一种选择
- 键盘 C语言虚拟按键值表
- CentOS7安装fcgi-2.4.1-fastcgi开发包-make编译出错
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
哑铃瘦手臂的方法
哑铃锻炼腹部方法
哑铃腹部锻炼方法
哑铃多少钱一对10公斤
哑铃的锻炼方法图解
肱二头肌哑铃锻炼方法
健身哑铃多重合适
女士哑铃多重合适
哑铃的使用方法
怎样用哑铃练手臂肌肉
哑铃使用方法
哑铃锻炼方法教程
哑铃怎么练小臂肌肉
用哑铃练肱二头肌
哑铃怎么练肱二头肌
哑铃怎么练手臂肌肉
哑铃的训练方法
40公斤哑铃多少钱
哑铃健身方法
哑铃练肌肉方法
哑铃锻炼肱二头肌方法
哑玲
亚铃报价
亚铃
杠铃锻炼方法图解
哑玲健身方法
葛根减肥
益生菌减肥靠谱吗
背肌锻炼方法哑铃
瘦胳膊用多重的哑铃
哑银
哑鼓
电子哑鼓
哑鼓垫什么牌子好
哑鼓垫是什么
哑鼓练习
哑鼓多少钱
哑鼓价格
鼓鼓的
大军鼓
陈仓石鼓