ジョブシェルスクリプト

ジョブシェルスクリプト

変数に値を格納するなどの操作を実行するシェルスクリプトがあります。たとえば、これは私のスクリプトです。

for i in ../../*.bam
do
        fn=$(basename $i)
        fn=${fn%_Aligned.sortedByCoord.out.bam}

        bamToBed -i $i | awk -v OFS="\t" '{if($6 ~ /+/){print $1,$2+67,$2+67+1,$4,$5,$6}else{print $1,$3-67-1,$3-67,$4,$5,$6}}' | awk -v OFS="\t" '$3 > 0' > ${fn}_pos.bed

        sortBed -g $genome -i ${fn}_pos.bed > ${fn}_n_pos.bed

        mv ${fn}_n_pos.bed ${fn}_pos.bed

        perl counter.pl ${fn}_pos.bed | sortBed -g $genome -i stdin | intersectBed -g $genome -sorted -a <(cat $genome | awk -v OFS="\t" '{print $1,"0",$2}') -b stdin -wa -wb | cut -f 4-7 > ${fn}.bedGraph

        bedGraphToBigWig ${fn}.bedGraph $genome ${fn}.bw

        a=`samtools view $i | wc -l`

        intersectBed -g $genome -sorted -c -a <(cat test.bed | awk -v OFS="\t" '{print $1,$2-50,$2+400,$4,$5,$6}') -b ${fn}_pos.bed | cut -f 4,7 | awk -v OFS="\t" '{print $1,$2,$a}'> ${fn}_IP_count.txt

        cat ${fn}_IP_count.txt | awk -v OFS="\t" '{print $1,$2,$a}' > final.txt
done

コードでこの行を見ることができるように、その中に変数を宣言しますa。数字を保存します。次に、タブで区切られた2列のテキストファイルを作成し、${fn}_IP_count.txt このファイルに3番目の列を追加しようとします。ここで、3番目の列はa各行の変数に格納された値です。たとえば、2列ファイルは次のようになります。

gene1   200
gene2   23
gene3   45
gene4   10

変数aに格納されている値が245676であると仮定すると、出力は次のように3番目の列に格納されます。

gene1   200 245676
gene2   23  245676
gene3   45  245676
gene4   10  245676

awkを使ってみましたが、正解が得られませんでした。どんな助けでも大変感謝します。

ベストアンサー1

渡すのと同じ方法で他の変数を渡しますOFS-v

前任者。

awk -v OFS="\t" -v a="$a" '{print $1,$2,a}'

おすすめ記事