我有一个包含 100 个相同格式文件的目录:
> S43.txt
Gene S43-A1 S43-A10 S43-A11 S43-A12
DDX11L1 0 0 0 0
WASH7P 0 0 0 0
C1orf86 0 15 0 1
> S44.txt
Gene S44-A1 S44-A10 S44-A11 S44-A12
DDX11L1 0 0 0 0
WASH7P 0 0 0 0
C1orf86 0 15 0 1
我想制作一个包含所有文件中所有列的巨大表格,但是当我这样做时:
paste S88.txt S89.txt | column -d '\t' >test.merge
当然,该文件包含两个 'Gene'
列。
如何一次粘贴目录中的所有文件?
如何从第一列之后的所有文件中排除第一列?
谢谢。
最佳答案
如果您使用的是 bash
,则可以在 paste
中使用进程替换:
paste S43.txt <(cut -d ' ' -f2- S44.txt) | column -t
Gene S43-A1 S43-A10 S43-A11 S43-A12 S44-A1 S44-A10 S44-A11 S44-A12
DDX11L1 0 0 0 0 0 0 0 0
WASH7P 0 0 0 0 0 0 0 0
C1orf86 0 15 0 1 0 15 0 1
(cut -d$'\t' -f2- S44.txt)
将读取 S44.txt
文件中除第一列以外的所有内容。
要对所有匹配 S*.txt
的文件执行此操作,请使用此代码段:
arr=(S*txt)
file="${arr[1]}"
for f in "${arr[@]:1}"; do
paste "$file" <(cut -d$'\t' -f2- "$f") > _file.tmp && mv _file.tmp file.tmp
file=file.tmp
done
# Clean up final output:
column -t file.tmp
关于bash - 粘贴多个文件,同时排除第一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35186116/