У меня есть файл TSV, который имеет 111 столбцов и 20 тыс. Строк. Я выполняю цикл while, чтобы прочитать каждую строку, выполнить запрос к конкретному столбцу в MongoDB и получить мой результат. Проблема в том, что ни awk
, ни echo
, ни cat
, ни tr
, ни sed
не работают, когда я пытаюсь добавить результат в конце своей строки. Мой запрос извлекает счетчик функции find
MongoDB. Возвращает только номер.
sed '1d' 10206.SNP.txt | while read line; do
array=($line)
valquery=$(mongo --quiet TestDatabase --eval "db.TestCollection.find( {\"Chromosome\": \"${array[0]}\", \"Position\": ${array[1]}, \"Reference\": \"${array[3]}\", \"Mutation\": \"${array[4]}\"} ).count()")
stuff="$line$valquery"
echo $stuff
done
или
sed '1d' 10206.SNP.txt | while read line; do
array=($line)
valquery=$(mongo --quiet TestDatabase --eval "db.TestCollection.find( {\"Chromosome\": \"${array[0]}\", \"Position\": ${array[1]}, \"Reference\": \"${array[3]}\", \"Mutation\": \"${array[4]}\"} ).count()")
echo "$line" | awk -v val=$valquery '{gsub("\n",X,$0); print $0"\n"val}'
done
sed '1d' 10206.SNP.txt | while read line; do
array=($line)
valquery=$(mongo --quiet TestDatabase --eval "db.TestCollection.find( {\"Chromosome\": \"${array[0]}\", \"Position\": ${array[1]}, \"Reference\": \"${array[3]}\", \"Mutation\": \"${array[4]}\"} ).count()")
echo "$line" | awk -v val=$valquery '{print $0"\t"val}'
done
или
sed '1d' 10206.SNP.txt | while read line; do
array=($line)
valquery=$(mongo --quiet TestDatabase --eval "db.TestCollection.find( {\"Chromosome\": \"${array[0]}\", \"Position\": ${array[1]}, \"Reference\": \"${array[3]}\", \"Mutation\": \"${array[4]}\"} ).count()") && echo -e "$line" | tr -d '\n' | awk -v val=$valquery '{print $0"\t"val}'
done
После перенаправления результатов моего запроса в файл я получаю что-то вроде:
chr1 ... lotsofcolumns ... 0.8481 0.9018 0.9983 gnomAD_EAS
293 // The query result
chr1 ... lotsofcolumns ... 0.9854 0.9995 gnomAD_EAS
997 // The query result
chr1 ... lotsofcolumns... 0.9314 0.9441 gnomAD_EAS
2 // The query result
Я хотел бы вывести результат в одной строке для каждой строки, например:
chr1 ... lotsofcolumns ... 0.8481 0.9018 0.9983 gnomAD_EAS 293
chr1 ... lotsofcolumns ... 0.9854 0.9995 gnomAD_EAS 997
chr1 ... lotsofcolumns... 0.9314 0.9441 gnomAD_EAS 2