我有一個檔案清單:
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
我想把第1和第3個檔案以及第2和第4個檔案連接起來,就像這樣:
到目前為止,我已經得到了,但我不能把實際的檔案串聯在一起,而只是把檔案名串聯起來...... 我相信可能有一個單行本......別緊張,我是一個臨床醫生,而不是一個生物資訊學家!cat 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=" " '$1=$1' MD5.txt | cut -f2 > tmp
#獲取樣本ID
ID=$(sed 's/_.*//' tmp | head -1)
#獲取需要的行數
sed '1q;d' tmp > file1
sed '3q;d' tmp > file2
sed '2q;d' tmp > file3
sed '4q;d' tmp > file4
#把檔案放在一起--這不起作用!!
cat file1 file2 > ${ID}_L4_1.fq.gz
cat file1 file2 > ${ID}_L4_2.fq.gz
rm file* tmp
我相信有一個單行本。
uj5u.com熱心網友回復:
file1, file2等的內容只是你想連接在一起的檔案名,所以你需要另一層cat,以便獲得內容。
#!/bin/bash
#get files names[/span
awk -v OFS=" " '$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檔案貓在一起,并使產生的檔案仍然 "有效",但這對我來說確實有效,所以我也學到了一些東西。
uj5u.com熱心網友回復:
我有一個解決方案,但我相信有一個更優雅的解決方案......!
標籤:#!
#!/bin/bash
#獲取檔案名
awk -v OFS=" " '$1=$1' MD5.txt | cut -f2 > tmp
#獲取樣本ID
ID=$(sed 's/_.*//' tmp | head -1)
#獲取需要的行數
file1=$(sed '1q;d' tmp)
file2=$(sed '3q;d' tmp)
file3=$(sed '2q;d' tmp)
file4=$(sed '4q;d' tmp)
#把檔案放在一起
cat $file1 $file2 > ${ID}_L4_1.fq.gz
cat $file1 $file2 > ${ID}_L4_2.fq.gz
rm tmp
