【发布时间】:2021-08-25 12:12:35
【问题描述】:
我有一个 for 循环,它给了我那种标准输出:
5 4473
4 4394
3 4386
2 4750
1 5963
6 4605
5 4270
4 4053
3 3909
2 4267
1 5362
3 3150
2 3457
1 4795
这里有 3 个循环游览。我想为每个游览创建一个新列,而不是逐行添加。我的意思是,我的第一次循环之旅给了我:
5 4473
4 4394
3 4386
2 4750
1 5963
第二个给出:
6 4605
5 4270
4 4053
3 3909
2 4267
1 5362
等等..
我想得到这样的输出:
6 0 6 4605 6 0
5 4473 5 4270 5 0
4 4394 4 4053 4 0
3 4386 3 3909 3 3150
2 4750 2 4267 2 3457
1 5963 1 5362 1 4795
我简要地向你展示我的命令:
for i in out_aligned.bc100*gff; do awk 'NR>3' ${i} |
awk '$3=="exon"' |
awk '{print $12}' |
uniq -c |
awk '{print $1}' |
sort -k1rn | uniq -c |
awk '{t=$1; $1=$2; $2=t; print}';
done
我尝试使用 pr 、 join 或 paste 但不可能得到那个。
通过仅获取行索引(例如,上面的行索引为 6 但它可能更高)来创建这种数组可能会非常好:
6 0 4605 0
5 4473 4270 0
4 4394 4053 0
3 4386 3909 3150
2 4750 4267 3457
1 5963 5362 4795
最好的
【问题讨论】:
-
如果您发布一个关于显示几个
*gff文件作为示例输入的新问题,我们可以帮助您获得所需的最终输出,而无需中间 shell 循环和调用所有这些命令。