awk处理之案例二:awk匹配文本
来源:互联网 发布:中信证券怎么样 知乎 编辑:程序博客网 时间:2024/05/16 07:36
摘要
awk是一款优秀的处理列文本的小工具。本场景利用awk来匹配文本。把存在a文本中而也在b文本中的文本提取出来存放到c文本中。前言:
****************************************************
awk是脚本中出色的文本处理工具。源码好像也是用C语言写的。本系列
会针对不同的案例,用awk来解决我们所要的问题。
为什么会用awk呢?是的,我们当然可以使用C语言或者java语言来对文本
做处理,但是小伙伴们不会觉得麻烦么?每次都要编译。修改起来也麻烦,正所谓
杀鸡焉用牛刀。但脚本的灵活便捷使得工作变得更加轻松容易。
***************************************** ***********
【场景】
现在有两个文本a.txt, b.txt,里面包含的内容如下所示。 现在要提取出b中匹配到a的信息,就是第一列基因名相同,第二列NM号也相同的信息,输出a文件的该行到C文件并加上一列“0”,如果b的文件存在a没有的NM号,则把该NM号加进去,并标识为1
a.txt文本内容如下:
ABCC9 NM_005691.2 NABCC9 NM_020297.2 YACE NM_000789.3 YADD1 NM_001119.4 NADD1 NM_014189.3 Yb.txt文本内容如下:
ABCC9 NM_020297ACE NM_000789ACER1 NM_133492ACE2 NM_021804ADD1 NM_001119.4 ADD1 NM_014189.3 ADD1 NM_014190.3 ADD2 NM_001185055.1提取完之后,c.txt文本内容如下:
ABCC9 NM_020297 1ACE NM_000789 1ACER1 NM_133492 1ACE2 NM_021804 1ADD1 NM_001119.4 N 0ADD1 NM_014189.3 Y 0ADD1 NM_014190.3 1ADD2 NM_001185055.1 1
# extract txt line from a.txt that also in b.txt# grammer: awk -test.awk a.txt b.txt{ if(NR==FNR) { a[$1$2]=$0 next } if($1$2 in a) { print a[$1$2]" 0" } else { print $0" 1" }}
解释一下:NR是工作中的记录数;FNR是当前输入文件的记录上。
当输入一个文件时,NR和FNR输出是一样的;当输入2个以上文件时,NR和FNR输出是不一样的。例如:
# awk '{print NR,$0}' file1 file21 a b c d2 a b d c3 a c b d4 aa bb cc dd5 aa bb dd cc6 aa cc bb dd
# awk '{print FNR,$0}' file1 file2
1 a b c d2 a b d c3 a c b d1 aa bb cc dd2 aa bb dd cc3 aa cc bb dd
上面语句的意思是,当NR和FNR相等的时,即第一个文件的内容全部存储到a当中。底下两个判断,如果是遍历a,b文件中所有行,如果在a当中则输出一种格式,如果不在a当中则输出另外一种格式。
脚本输出
作者:Alex
出处:http://blog.csdn.net/hellotime本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
- awk处理之案例二:awk匹配文本
- awk处理之案例五:awk匹配字段2包含字段1的文本
- awk处理之案例六:awk根据条件插入文本
- awk处理之案例三:awk去掉不需要的文本行
- awk处理之案例四:sort加awk来过滤文本
- shell文本处理之awk
- 文本处理工具之awk
- awk 匹配案例
- awk处理之案例一:awk 处理百分比的问题
- AWK文本处理之--文本奇偶分行
- awk匹配文本小记
- linux文本处理工具之awk
- 文本处理之sed,awk,grep
- Unix文本处理工具之awk
- Unix文本处理工具之awk
- AWK处理文本之“分隔符“
- Unix文本处理工具之awk
- Linux文本处理工具之awk
- Ubuntu下为Firefox安装Adobe Flash Player
- SAP PR 转 PO
- Qt之密码框不可全选、复制、粘贴无右键菜单等
- ORACLE数据库查看执行计划的方法
- c 文件操作
- awk处理之案例二:awk匹配文本
- JAVA中的equals()和hashCode()方法
- Android 用GridView实现Gallery效果
- Android ShakeDetector(摇晃检测)
- 利用qrcode.jar生成和解析二维码(非zxing)
- 屏蔽页面backspace键,防止浏览页后退,转自 稀饭土豆的番茄
- SICP 习题 (1.6) 解题总结:对if语句的特殊处理
- JDK1.5 之 自动拆箱装箱
- Jquery chosen动态设置值