Когда я запускаю этот скрипт, я получаю сообщение об ошибке: «сортировка: ошибка записи: стандартный вывод: сломанная труба»
Если кто-то может мне помочь, это было бы здорово, я схожу с ума от этой ошибки
входной файл представляет собой список файлов, которые все содержат последовательности ДНК в формате FASTA, поэтому каждый файл содержит несколько последовательностей (каждая последовательность в одной строке) в формате: в $1 (идентификатор) в $2,3,4,5, 6,7 и 8 (больше значений) в $9 (последовательность ДНК)
Затем я хочу выбрать каждую из этих последовательностей по количеству последовательностей ($ common_hits) в каждом файле (это число не является фиксированным значением, но я установил 6 для примера) -Все файлы с менее чем 6 последовательностями должны быть удалены -Файлы с 6 последовательностей в порядке. Файлы с более чем 6 последовательностями должны быть сокращены до 6 последовательностей (эти последовательности выбираются по более высоким значениям поля $5).
выходные файлы должны иметь все 6 последовательностей, и последовательность (поле $9) должна быть в строке после идентификатора
Я пока не удаляю исходные файлы с более чем 6 последовательностями, потому что хочу быть уверенным, что они работают.
par_list=`ls -1 *BR`
common_hits="6"
for i in ${par_list}
do
if [ "`cat ${i} | wc -l`" -lt "${common_hits}" ]
then
rm -f ${i}
elif [ "`cat ${i} | wc -l`" -gt "${common_hits}" ]
then
cat ${i} | sort -nr -k 5 | head -n ${common_hits} | \
awk '{print $1" " $2" " $3" " $4" " $5" " $6" " $7" "$8 ; print $9}' > ${i}.ph
fi
done
cat
вызовов программы не нужен,wc
иsort
оба принимают имя входного файла в качестве крайнего правого параметра. - person cdarke   schedule 13.09.2017head | awk
—awk
может сам выбирать, какие строки читать. `awk '{ печать ... } NR › 5 { выход }' - person Charles Duffy   schedule 13.09.2017ls
. Цикл лучше записать (с меньшим количеством непредвиденных ошибок) какfor i in *BR
. - person Charles Duffy   schedule 13.09.2017