我有一个文件列表:
MD5.txt
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我想像这样连接第一个和第三个文件以及第二个和第四个文件:
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到目前为止,我不能将实际的文件连接在一起,而只是连接文件名……
#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我敢肯定可能会有一班飞机...别急,我是临床医生不是生物信息学家!
发布于 2021-09-13 15:09:08
file1、file2等的内容只是您想要连接在一起的文件名,因此您需要另外一层cat才能获得内容。
#!/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文件猫在一起,并让结果文件仍然“工作”,但这对我来说是有效的,所以我也学到了一些东西。
发布于 2021-09-13 15:06:01
我有一个解决方案,但我相信一定有更好的解决方案!
#!/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 tmphttps://stackoverflow.com/questions/69164229
复制相似问题