我在同一列上加入了两个文件。加入后,我只希望输出是原始顺序中仅来自其中一个文件的所有列。例如:
cat file1.tsv
1 a ant
2 b bat
3 c cat
8 d dog
9 e eel
cat file2.tsv
1 I
2 II
3 III
4 IV
5 V
join -1 1 -2 1 file1.tsv file2.tsv -t $'\t' -o 1.1,1.2,1.3
1 a ant
2 b bat
3 c cat
我知道我使用
-o 1.1,1.2..
表示法,但是我的文件有两打以上的列。是否可以使用一些通配符来表示-o 1.*
或其他内容? 最佳答案
我不知道格式字符串中的通配符。
从您想要的输出中,我认为您可以这样实现,而无需指定所有枚举:
grep -f <(awk '{print $1}' file2.tsv ) file1.tsv
1 a ant
2 b bat
3 c cat
或作为纯awk解决方案:
awk '{if(NR==FNR){a[$1]++}else{if($1 in a){print}}}' file2.tsv file1.tsv
1 a ant
2 b bat
3 c cat
关于linux - unix join命令返回一个文件中的所有列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53602671/