假设我有两个相对较大的以制表符分隔的文件file1.txt,file2.txt。
file1.txt
id\tcity\tcar\ttype\tmodel
file2.txt
id\tname\trating
假设file1.txt有2000个唯一的ids,因此有2000个唯一的行,而file2.txt只有1000个唯一的行,因此有1000个唯一的ids。有没有办法合并这两个表?
情况1.通过file1.txt中的id合并它们,当file2.txt中没有id时,将填充NAs。
Case2。在file2.txt中通过id合并它们,其中只有file2.txt中的id将与file1.txt和file2.txt中的字段一起打印出来。
注意:合并的新文件也应该是制表符分隔的文件,以及头文件。Note2。我也希望在没有标题的情况下能给出一些建议。
谢谢!
发布于 2012-11-09 23:52:08
在第一种情况下,这对我很有效:
join -t $'\t' -1 1 -2 1 -a 1 -a 2 <(sort fileone.txt) <(sort filetwo.txt) | sort -n -t $'\t' > filethree.txt
然后:
awk '{if(NF+0<7) printf "%s\tNA\tNA\n", $0; else print $0}' filethree.txt
发布于 2012-11-09 08:40:45
试着这样做:
perl -lane '
END{print "$_$h{$_}" for sort keys %h}
$h{$F[0]} .= "\t" . join "\t", @F[1..$#F];
' file1.txt file2.txt
此脚本连接ids (第一列)。
https://stackoverflow.com/questions/13300271
复制相似问题