объединение двух файлов по общему столбцу

Прочитав Freedesktop Guide to pkg-config я понял, что pkg-config ничего не делает для проверки правильности двоичных файлов, библиотек или путей. Он только выплевывает то, что написано в Libs и Cflags файлов .pc .

В моем случае они создаются процессом компиляции libav и используют переменную префикса , переданную в configure .

Таким образом, после перекомпиляции libav с префиксом , установленным на абсолютный путь, pkg-config выведет флаги -I и -L , подходящие для использования в компиляции. других проектов.

3
07.06.2017, 17:59
3 ответа

Ваши файлы были созданы в Windows, поэтому они имеют окончания строк в стиле Windows (\r\n). Удалите \r и все должно работать так, как вы ожидаете:

sed -i 's/\r//' File1
sed -i 's/\r//' File2
awk 'FNR==NR{a[$4]=$5;next} {print $1,$2,$3,$4,a[$4]}' File2 File1 > file3
2
27.01.2020, 21:21

соединение + сортировка решение:

join -j4 -a1 -o1.1,1.2,1.3,1.4,2.5 <(sort -k4 File1) <(sort -k4 File2) | column -t

Вывод:

chr19  4124051    4124250    1  CUP
chrX   154458151  154458200  2
chr22  37019451   37019600   3
chr15  74995401   74995550   4  CUP
chr12  128823901  128824100  5  CUP

  • -j4 - соединение по 4-му столбцу

  • -a1 - вывести непарные строки из 1-го файла

  • sort -k4 File1 - отсортировать файл по 4-му столбцу/ключу (-k4)

1
27.01.2020, 21:21
perl -F'\s+' -lane '
   s/\r$//; my $i = join $;, @F[0,3];
   @ARGV and $h{$i} = $F[4],next;
   print exists $h{$i} ? s/$/ $h{$i}/r : $_;
' File2 File1

Дает:

chr19   4124051 4124250 1
chrX    154458151   154458200   2
chr22   37019451    37019600    3
chr15   74995401    74995550    4 CUP
chr12   128823901   128824100   5 CUP
0
27.01.2020, 21:21

Теги

Похожие вопросы