首页 > 其他 > 详细

awk多文件处理时的分隔符?

时间:2021-07-07 23:57:51      阅读:25      评论:0      收藏:0      [点我收藏+]

问题来源

我有两个文件,一个是plink过滤后得到的.fam文件(空格分隔);另一个是样本对应关系文件(tab分隔)。
文件1:
技术分享图片
文件2:
技术分享图片

两个文件匹配,awk常规操作。这里我想要保留文件2中和文件1第一二列匹配得到的样本(匹配后文件2的第一列)。当然这里两个文件数目是一样的,所以应该全部匹配才对(测试用)。

常规操作:

awk  ‘{if(NR==FNR){a[$1]}else if($2 in a)print $1}‘ file1.fam file2

技术分享图片

发现少了两个样本,空格符分开的两个样。

定义下输入(FS)输出(OFS):

awk -v FS=‘ ‘  -v OFS=‘\t‘ ‘{if(NR==FNR){a[$1]}else if($2 in a)print $1}‘ file1.fam file2

结果是一样的,因为输入的分隔符一样。

当空白格和tab同时存在时,如何定义?如何得到正确的结果?

解决方法

在对应文件前分别指定FS即可。

awk  ‘{if(NR==FNR){a[$1]}else if($2 in a)print $1}‘ FS=" " file1.fam FS="\t" file2

技术分享图片

https://stackoverflow.com/questions/24516141/processing-2-files-with-different-field-separators-using-awk

awk多文件处理时的分隔符?

原文:https://www.cnblogs.com/jessepeng/p/14983425.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!