排序中的bash错误"排序:写入失败:标准输出:管道损坏"

时间:2017-09-13 16:31:52

标签: bash sorting broken-pipe

当我运行此脚本时,我收到一条错误消息:" sort:write failed:标准输出:管道损坏"

如果有人可以帮助我,那就太棒了,我会因为这个错误而疯狂

输入文件是一个包含FASTA格式的DNA序列的文件列表,因此每个文件都有几个序列(每个序列在一行中),格式如下: $ 1(标识符)$ 2,3,4,5,6,7& 8(更多值)$ 9(DNA序列)

然后我希望在每个文件中按序列数($ 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 

1 个答案:

答案 0 :(得分:3)

data: { selectedProducts: [] } 始终报告错误,如果sort | headhead写完所有输出之前退出(或以其他方式关闭其标准输入)(将会是如果sort写的流比sort消耗的流长得多,则为case。这是按设计的:如果head无法写出其所有输出,那么预计会失败;如果它忽略了这样的故障,它也会忽略由于其他原因而无法写出输出的情况(磁盘已满,网络连接断开等等。

这没有什么不寻常或不可取的。如果您不关心错误,请忽略它,并检查管道输出的行数,以确定您是否有错误条件。

相关问题