Команда unix join возвращает все столбцы в одном файле - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть два файла, к которым я присоединяюсь в одном столбце.После объединения я просто хочу, чтобы на выходе были все столбцы в исходном порядке только из одного файла.Например:

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.* или что-то в этом роде?

1 Ответ

0 голосов
/ 04 декабря 2018

Я не знаю о подстановочных знаках в строке формата.

Исходя из вашего желаемого результата, я думаю, что то, что вы хотите, может быть достижимо так без необходимости указывать все перечисления:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...