我有两个文件要加入一栏。加入后,我只想输出所有列,按原始顺序,仅来自一个文件。例如:
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/