首页 > 解决方案 > 类似于较早的问题“将标题添加到列表文本文件中的列”

问题描述

我正在尝试将一些标题添加到 txt 文件中。实际上我已经找到了一个脚本,但我想编辑它的一部分。脚本(如果你喜欢,你也可以在这里找到它:https ://ucdavis-bioinformatics-training.github.io/2017-June-RNA-Seq-Workshop/thursday/counts.html ):

for x in 03-alignment/*/*ReadsPerGene.out.tab; do \
    s=`basename $x | cut -f1 -d_`
    echo $s
done | paste -s > header.txt

问题是我想“粘贴-s”,但不是从第一列开始,而是从第二列开始。我以为完成了| 2 美元 | 粘贴-s | header.txt 可以提供帮助,但没有帮助。

任何想法如何直接从第二列开始添加标题,好吗?

所以使用上面的脚本我得到这个输出。

L004_AQAU-19 L004_AQAU-20 L004_AQAU-21 etc. 
ALOMY0G001 0 0 
ALOMY0G002 0 10 
ALOMY0G003 20 15 
ALOMY0G004 4 5 etc. 

但我想采取

        L004_AQAU-19  L004_AQAU-20  etc.
ALOMY0G001  0   0   
ALOMY0G002  0   10
ALOMY0G003  20  15
ALOMY0G004  4   5
etc.

标签: bashawk

解决方案


您可以使用cut从制表符分隔的单词行中获取范围。

... paste -s | cut -f2- > header.txt

如果要跳过第一列,(第一列没有标题,只需在开头引入一个空选项卡。

... paste -s | sed 's/^/\t/' > header.txt

在这里我sed用来替换一些东西。您可以s/A/B/g将 A 替换为 B。(g 表示每行是否必须多次执行此操作。)这些“模式”是正则表达式(正则表达式)。因为正则表达式^是行的开头。所以在这里,我将^(行首)替换为\t(一个制表符)。(paste默认使用制表符,paste -d, -s例如使用逗号。)


推荐阅读