Вы можете установить его командой rpm
:
rpm -i https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/n/ntfs-3g-2017.3.23-11.el7.x86_64.rpm
Можно попробовать установить только yum
из rpm тем же способом:
rpm -i http://your_centos_mirror/7/os/x86_64/Packages/yum-3.4.3-161.el7.centos.noarch.rpm
awk может справиться с этим самостоятельно :это файл "combine.awk"
# first file, first line
FILENAME == ARGV[1] && FNR == 1 {
for (i=5; i<=NF; i++) head[i] = $i
}
# first file, subsequent lines
FILENAME == ARGV[1] && FNR > 1 {
for (i=5; i<=NF; i++) {
split($i, f, /:/)
value[$2, head[i]] = f[3]
}
}
# second file
FILENAME == ARGV[2] {
print $0, (FNR == 1 ? "Output" : value[$3, $1])
}
И затем вы вызываете его вот так
awk -f combine.awk file2 file1 > file3
Выходной файл содержит
SampleName Type Position Output
5R01924 ABC 92184093 R
5R01028 ABC 15589809 J
5R01092 ABC 48759348 AL
Нет необходимости вызывать bash для чтения файлов.
Все это можно сделать внутри awk, как показано здесь:
### sanitize inputs
for f in./File1./File2; do
dos2unix "$f"
done
awk '
!NF || $1 ~ /^#/ {next}
NR==FNR {
for (i=5; i<=NF; i++)
if (NR > 1) {
split($i, t, /:/)
a[sample[i-4],$2] = t[3]
split("", t, ":")
}
else sample[i-4] = $i
next
}
{
k = $1 SUBSEP $3
f = FNR == 1 ? "Output" \
: !(k in a) ? "N/A" \
: a[k]
print $0, f
}
' File2 OFS="\t" File1
Выход:
SampleName Type Position Output
5R01924 ABC 92184093 R
5R01028 ABC 15589809 J
5R01092 ABC 48759348 AL
Во-первых, ваш вопрос сложный, значит, и не стоило ожидать простого ответа.
awk 'BEGIN{IFS="[[:space:]]+";OFS=" ";} NR>1 && NR==FNR {Trr[$3]=$0;Arr[$1]=$3;next} NR>FNR && FNR==1 {for(key in Arr) {for(i=5;i<=NF;i++) {if(key==$i) {nArr[key]=i;break}}}} NR>FNR && FNR>1 {for(tKey in Trr) {if($2==tKey) {for(aKey in Arr) {if(Arr[aKey]==$2) {i=nArr[aKey];Trr[tKey]=Trr[tKey]" "$i;break}}}}}END{for(key in Trr) print Trr[key]}' A B | tr ':' ' ' | awk -F'[[:space:]]+' '{print $1,$2,$3,$6}'
пояснение к вышеизложенному:
awk
, NR перейдите от 1, но, FNR сбрасывайте на один путем изменения файла