Я хотел бы спросить, есть ли какой-нибудь быстрый способ, используя awk, получить значения третьего столбца для каждой строки, которые соответствуют первому и второму столбцу с некоторыми значениями?
У меня есть ситуация, когда у меня в переменной массива совпадают значения для второго столбца файла и переменная со значением, совпадающим для первого столбца.
Итак, у меня есть переменные vals и chr:
chr="chr1"
vals=($(seq 4 1 10))
echo ${vals[@]}
Я бы хотел использовать их в таком скрипте:
res=$(awk '{if ($1=="'$chr'" && $2 in "'$vals[*]'") print $3} ' $depthFile)
Допустим, у меня есть в моем файле:
chr1 5 length=35
chr1 6 length=35
chr1 7 length=35
chr1 8 length=35
chr1 9 length=76
chr1 10 length=35
chr1 11 length=35
chr1 12 length=35
chr1 13 length=35
chr1 14 length=76
И у меня есть 6 7 8 9
в vals и chr = chr1.
Я бы ожидал, используя echo ${res[@]}
, чтобы иметь:
length=35
length=35
length=35
length=76
Пока я получаю эту ошибку. Я знаю, что есть проблема с передачей массива vals.
awk: cmd. line:1: {if ($1=="chr1" && $2 in "4[*]") print $3}
awk: cmd. line:1: ^ syntax error
Заранее большое спасибо!