Как получить уникальный выходной файл для каждого l oop с bash - PullRequest
0 голосов
/ 04 августа 2020

У меня есть сценарий ниже, я просматриваю ткани мозга GTEx и запускаю программу, изложенную ниже. Как мне в --output поместить уникальный выходной файл? Я заблудился в этом, все еще новичок в bash. Кстати, файлы TISSUE выглядят так: Brain_Frontal_Cortex_BA9.genes.annot и Lung.genes.annot В папке GTExV8 у меня есть 48 уникальных файлов, через которые TISSUE будет oop. Таким образом, вывод для одного примера будет Brain_Frontal_Cortex_BA9_emagma и Lung_emagma

#!/bin/bash

for TISSUE in GTExV8/*;
do
./magma 
--bfile g1000_eur 
--gene-annot $TISSUE 
--pval Summary_Statistics_GWAS_2016/ALSGWAS.txt ncol=Ne 
--gene-settings adap-permp=10000 
--out LABEL WITH EACH TISSUE LOOPED
done
.

Ответы [ 2 ]

2 голосов
/ 04 августа 2020

Используя Parameter Expansion , вы можете извлечь часть переменной $TISSUE, которую вы хотите использовать в выходном имени файла.

for TISSUE in GTExV8/*;
do
    # remove the directory part:
    outfile="${TISSUE##*/}"

    # remove the file extension:
    outfile="${outfile%%.genes.annot}"

    # add a filename ending:
    outfile="${outfile}_emagma"

    # use $outfile:
    ./magma ... --gene-annot "$TISSUE" --out "$outfile"
done
0 голосов
/ 04 августа 2020

Не уверен, что вы имеете в виду, но если вы намерены создать разные имена для файлов --out на основе имени файла $tissue, и предполагая, что BA9 - это переменная часть, и вы хотите назвать вывод после это, вы можете сделать

#!/bin/bash
for tissue in GTExV8/*;
do
IFS='_.' a=( $tissue )
./magma \
--bfile g1000_eur \
--gene-annot $tissue \
--pval Summary_Statistics_GWAS_2016/ALSGWAS.txt ncol=Ne \
--gene-settings adap-permp=10000 \
--out Amygdala_emagma_${a[3]}
done

, который разбивает имя $tissue в массиве a, чтобы получить ${a[3]}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...