首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >连接文件列表中的每个其他文件

连接文件列表中的每个其他文件
EN

Stack Overflow用户
提问于 2021-09-13 14:14:15
回答 2查看 35关注 0票数 0

我有一个文件列表:

MD5.txt

代码语言:javascript
运行
复制
8530362a272d04efef64b7f1ae0d1069  NGS35_FKDN210261811-1A_H3YNKDSX2_L4_1.fq.gz
9b34bdbbb17cdb1205035e24124fed1a  NGS35_FKDN210261811-1A_H3YNKDSX2_L4_2.fq.gz
00f8f992334458383fc1a5c7b06d403e  NGS35_FKDN210261811-1A_H5JY3DSX2_L4_1.fq.gz
cca0e17b3dcc1e644ec1a9a4a60a851e  NGS35_FKDN210261811-1A_H5JY3DSX2_L4_2.fq.gz

我想像这样连接第一个和第三个文件以及第二个和第四个文件:

代码语言:javascript
运行
复制
cat NGS35_FKDN210261811-1A_H3YNKDSX2_L4_1.fq.gz NGS35_FKDN210261811-1A_H5JY3DSX2_L4_1.fq.gz >NGS35_L4_1.fq.gz

cat NGS35_FKDN210261811-1A_H3YNKDSX2_L4_2.fq.gz NGS35_FKDN210261811-1A_H5JY3DSX2_L4_2.fq.gz >NGS35_L4_2.fq.gz

到目前为止,我不能将实际的文件连接在一起,而只是连接文件名……

代码语言:javascript
运行
复制
#get files names
awk -v OFS="\t" '$1=$1' MD5.txt | cut -f2 > tmp

#get sample ID
ID=$(sed 's/_.*//' tmp | head -1)

#get lines needed
sed '1q;d' tmp > file1
sed '3q;d' tmp > file2

sed '2q;d' tmp > file3
sed '4q;d' tmp > file4

#Cat files together - this doesn't work!!
cat file1 file2 > ${ID}_L4_1.fq.gz
cat file1 file2 > ${ID}_L4_2.fq.gz

rm file* tmp

我敢肯定可能会有一班飞机...别急,我是临床医生不是生物信息学家!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-13 15:09:08

file1file2等的内容只是您想要连接在一起的文件名,因此您需要另外一层cat才能获得内容。

代码语言:javascript
运行
复制
#!/bin/bash

#get files names
awk -v OFS="\t" '$1=$1' MD5.txt | cut -f2 > tmp

#get sample ID
ID=$(sed 's/_.*//' tmp | head -1)

#get lines needed
cat $(sed '1q;d' tmp) $(sed '3q;d' tmp) > ${ID}_L4_1.fq.gz
cat $(sed '2q;d' tmp) $(sed '4q;d' tmp) > ${ID}_L4_2.fq.gz

rm  tmp

顺便说一句,我很惊讶你能够将.gz文件猫在一起,并让结果文件仍然“工作”,但这对我来说是有效的,所以我也学到了一些东西。

票数 1
EN

Stack Overflow用户

发布于 2021-09-13 15:06:01

我有一个解决方案,但我相信一定有更好的解决方案!

代码语言:javascript
运行
复制
#!/bin/bash

#get file names
awk -v OFS="\t" '$1=$1' MD5.txt | cut -f2 > tmp

#get sample ID
ID=$(sed 's/_.*//' tmp | head -1)

#get lines needed
file1=$(sed '1q;d' tmp)
file2=$(sed '3q;d' tmp)

file3=$(sed '2q;d' tmp)
file4=$(sed '4q;d' tmp)

#car files together
cat $file1 $file2 > ${ID}_L4_1.fq.gz
cat $file1 $file2 > ${ID}_L4_2.fq.gz

rm tmp
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69164229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档