连接具有相同部分ID BASH

时间:2018-02-14 23:24:50

标签: bash

我有一个包含许多fq.gz文件的目录。我想循环文件名并连接具有相同部分ID的任何文件。例如,在目录中的1000个文件中,这六个文件需要连接成一个文件(因为它们从“L1”开始共享相同的ID)

  

141016-FC012-L1-N707-S504--123V_pre - HS - R1.fq.gz
  141031-FC01229-L1-N707-S504--123V_pre - HS - R1.fq.gz
  141020-FC01209-L1-N707-S504--123V_pre - HS - R1.fq.gz
  141027-FC013-L1-N707-S504--123V_pre - HS - R1.fq.gz
  141023-FC01219-L1-N707-S504--123V_pre - HS - R1.fq.gz

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

可能不是最好的方式,但这可能会做你需要的:

while IFS= read -r -d '' id; do
    cat *"$id" > "/some/location/${id%.fq.gz}_grouped.fq.gz"
done < <(printf '%s\0' *.fq.gz | cut -zd- -f3- | sort -uz)

这将创建具有以下格式的文件:

<ID>_grouped.fq.gz
L1-N707-S504--123V_pre--Hs--R1_grouped.fq.gz
...
...