Я объясняю свою проблему:
У меня есть два файла, один из которых выглядит следующим образом (это файл .tsv, в каждой строке необязательно одинаковое количество столбцов):
OTU0001 Archaea
OTU0002 Archaea;Aenigmarchaeota;Deep Sea Euryarchaeotic Group(DSEG);uncultured archaeon
OTU0003 Archaea;Altiarchaeales;uncultured euryarchaeote
OTU0004 Archaea;Bathyarchaeota;uncultured archaeon
OTU0005 Archaea;Diapherotrites;uncultured euryarchaeote
OTU0006 Archaea;Euryarchaeota;Halobacteria;Halobacteriales;Halobacteriaceae;uncultured
OTU0007 Archaea;Euryarchaeota;Halobacteria;Halobacteriales;Halobacteriaceae;uncultured;marine metagenome
Каждая строка начинается с OTUXXXX, и этот идентификатор всегда находится в первом столбце.
Другой файл .tsv с 3 столбцами:
OTU3978 UniRef90_A0A010P3Z8 0.846
OTU0006 UniRef90_A0A010P3Z8 0.855
OTU4929 UniRef90_A0A010P3Z8 0.829
OTU4317 UniRef90_A0A011P550 0.85
OTU4816 UniRef90_A0A011P550 0.807
OTU3902 UniRef90_A0A011QPQ2 0.836
OTU3339 UniRef90_A0A011RKI6 0.835
OTU1359 UniRef90_A0A011RLA7 0.801
OTU2085 UniRef90_A0A011RLA7 0.843
OTU3542 UniRef90_A0A011RLA7 0.866
Я хотел бы заменить во втором файле каждый OTUXXX
вторым столбцом первого файла. Например, он должен дать (для 2-й строки второго файла):
OTU0006UniRef90_A0A010P3Z8 0.855
, который становится:
Archaea;Euryarchaeota;Halobacteria;Halobacteriales;Halobacteriaceae;uncultured UniRef90_A0A010P3Z8 0.855
Возможно ли это в bash?
Редактировать:
Я могу заменить столбцы этим
awk 'FNR==NR{a[NR]=$2;next}{$1=a[FNR]}1' f1 f2
Но это не «автоматический», первая строка файла 1 будет совпадать с первой строкой файла 2 ... Нет изменений в соответствии со значением OTUXXX