Прочитав Freedesktop Guide to pkg-config я понял, что pkg-config ничего не делает для проверки правильности двоичных файлов, библиотек или путей. Он только выплевывает то, что написано в Libs
и Cflags
файлов .pc
.
В моем случае они создаются процессом компиляции libav и используют переменную префикса
, переданную в configure
.
Таким образом, после перекомпиляции libav с префиксом
, установленным на абсолютный путь, pkg-config выведет флаги -I
и -L
, подходящие для использования в компиляции. других проектов.
Ваши файлы были созданы в 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
соединение + сортировка решение:
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
)
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