在循环bash中连接文件对



我有一个表,每个文件都有要连接的文件

a.filtred.bed.gff   a.genomic.gff
b.filtred.bed.gff   b.genomic.gff

我想在bash循环中连接for

cat a.filtred.bed.gff a.genomic.gff > a.combine.gff

但我不知道如何做到这一点,也许有两个变量或匹配对的行,但这不是一个简单的逻辑对我来说

尝试查找

你没有提供表,所以我们不能帮助你加载它,但是如果你创建一个关联数组,你可以匹配其中的文件作为键/值对。

$: declare -A lookup;
$: cat file
a.filtred.bed.gff   a.genomic.gff
b.filtred.bed.gff   b.genomic.gff
$: while read k v; do lookup["$k"]="$v"; done < file
$: for k in "${!lookup[@]}"; do echo "cat $k ${lookup[$k]} > ${k}_${lookup[$k]}.merge"; done
cat b.filtred.bed.gff b.genomic.gff > b.filtred.bed.gff_b.genomic.gff.merge
cat a.filtred.bed.gff a.genomic.gff > a.filtred.bed.gff_a.genomic.gff.merge

或者直接从表中添加第三列。

$: cat file
a.filtred.bed.gff a.genomic.gff myA.merge
b.filtred.bed.gff b.genomic.gff myB.merge
$: while read -r a b c; do echo "cat $a $b > $c"; done < file
cat a.filtred.bed.gff a.genomic.gff > myA.merge
cat b.filtred.bed.gff b.genomic.gff > myB.merge

由于后缀似乎不变:

for gen in *.genomic.gff; do
prefix=${gen%.genomic.gff}
cat "${prefix}.filtred.bed.gff" "$gen" > "${prefix}.combine.gff"
done

最新更新