问题:输出文件" single_hits.txt"是空白的:
cut -f10 genome_v_trans.pslx | sort | uniq -c | grep ' 1 ' | sed -e 's/ 1 /\\\</' -e 's/$/\\\>/' > single_hits.txt
我已从Linux下载脚本以在Mac OSX 10.7.5上使用。由于它不起作用,因此需要进行一些更改。我有9个&#34; contigs&#34; DNA数据需要过滤以除去所有但独特的重叠群。 blat用于比较两个数据集并输出带有这些重叠群的.pslx文件,其工作原理如下:
964 0 0 0 0 0 3 292 + m.1 1461 0 964 3592203 ...
501 0 0 0 0 0 3 468 - m.1 1461 960 1461 5269699 ...
1168 0 0 0 1 2 7 1232 - m.7292 1170 0 1170 5233270 ...
然后这个脚本应该删除相同的contigs,例如前两个(m.1)
答案 0 :(得分:1)
这似乎适用于您提供的有限数据,
grep -v `awk '{print $10}' genome_v_trans.pslx | uniq -d` genome_v_trans.pslx
除非您希望它具有&lt;&gt;代替重复项,然后您可以替换重复的条目,然后您可以执行以下操作:
IFS=$(echo -en "\n\b") && for a in $(awk '{print $10}' genome_v_trans.pslx | uniq -d); do sed -i "s/$a/<>/g" genome_v_trans.pslx; done && unset IFS
结果:
964 0 0 0 0 0 3 292 +&lt;&gt; 1461 0 964 3592203 ......
501 0 0 0 0 0 3 468 - &lt;&gt; 1461 960 1461 5269699 ......
1168 0 0 0 1 2 7 1232 - m.7292 1170 0 1170 5233270 ......
或者如果您想在singlehits文件中使用它:
IFS=$(echo -en "\n\b") && for a in $(awk '{print $10}' dna.txt | uniq -d); do sed "s/$a/<>/g" dna.txt >> singlehits.txt; done && unset IFS
SINGLE_TMP=/tmp/_single_tmp_$$ && awk '{if ($10 == "<>") print}' singlehits.txt > "$SINGLE_TMP" && mv "$SINGLE_TMP" singlehits.txt && unset SINGLE_TMP
或更优雅:sed -ni '/<>/p' singlehits.txt
singlehits.txt:
964 0 0 0 0 0 3 292 +&lt;&gt; 1461 0 964 3592203 ......
501 0 0 0 0 0 3 468 - &lt;&gt; 1461 960 1461 5269699 ......