我想通过从每个文件中获取第二列来组合96个文件,并保留第一列,这在所有文件之间是相似的。我试着在R中做这件事,但是我认为它在终端上会更好。它用awk工作吗?
样本数据:
DMED7013:Rfam robinm$ head Rfam_Counts_combined_SplitRfam_Counts_combinedhtseq_Rfamoutput402R.sam
Seq_../trimmed/402R.tally.fasta __not_aligned
__too_low_aQual 3
mir-10 5
Y_RNA 4
__too_low_aQual 0
__too_low_aQual 0
__not_aligned 1
mir-8 2
mir-671 3
mir-671 16档案:
DMED7013:Rfam robinm$ ls -l
-rw-r--r-- 1 robinm staff 1711388 Sep 22 19:12 Rfam_Counts_combined_SplitRfam_Counts_combinedhtseq_Rfamoutput100G.sam
-rw-r--r-- 1 robinm staff 1712778 Sep 22 19:12 Rfam_Counts_combined_SplitRfam_Counts_combinedhtseq_Rfamoutput100R.sam
-rw-r--r-- 1 robinm staff 1709703 Sep 22 19:12 Rfam_Counts_combined_SplitRfam_Counts_combinedhtseq_Rfamoutput106G.sam
-rw-r--r-- 1 robinm staff 1707486 Sep 22 19:12 Rfam_Counts_combined_SplitRfam_Counts_combinedhtseq_Rfamoutput106R.sam
-rw-r--r-- 1 robinm staff 1704757 Sep 22 19:12 Rfam_Counts_combined_SplitRfam_Counts_combinedhtseq_Rfamoutput122G.sam
-rw-r--r-- 1 robinm staff 1705471 Sep 22 19:12 Rfam_Counts_combined_SplitRfam_Counts_combinedhtseq_Rfamoutput122R.sam
.....发布于 2015-09-22 19:05:57
此脚本将满足您的需要。
t0=mktemp; touch t0;
for f in prefix*.csv;
do paste t0 <(cut -d" " -f2 $f) > t1 && mv t1 t0;
done;
tr '\t' ' ' <t0 && rm t0使用“剪切/粘贴”收集临时文件中的第二列;完成后,在打印结果后删除该临时文件。
若要保留第一列,请将touch t0更改为cut -d" " -f1 oneofthefiles.csv > t0
或者,去救援吧!
awk '
{a[FNR]=a[FNR]?a[FNR] OFS $2:$1}
END{for(i=1;i<=FNR;i++) print a[i]}
' prefix*.csv根据行号将所有文件中的第二个字段合并,从第一个文件中保留第一个字段。
https://stackoverflow.com/questions/32724105
复制相似问题