从bash脚本中的命令获取新文件输出

时间:2015-03-24 14:08:11

标签: bash

这是我的代码的一部分:

for i in $(ls  $1); do
    input_file1=$i
    NOEXT1=${base1%.*}
    for j in $( ls $2); do
        input_file2=$j
        base2=${j##*/}
        NOEXT2=${base2%.*}
        intersectBed  -u -a $1$input_file1 -b $2$input_file2 | wc | awk '{print $1}'
        #echo $NOEXT1"_VS_"$NOEXT2
        wc $1$input_file1 | awk '{print $1"\t"$4}'
        wc $2$input_file2 | awk '{print $1"\t"$4}'
    done
done 

$1$2是我定义的文件夹。

我想要做的是为每个循环创建一个新文件,该文件将使用intersectBed -u -a $1$input_file1 -b $2$input_file2的输出编写而不会制动循环并且不会插入wc $1$input_file1 | awk '{print $1"\t"$4}'和{{的输出1}},输出

1 个答案:

答案 0 :(得分:0)

我不确定我是否正确理解了您的问题,但只是将输出重定向到您想要的文件。它根本不会影响脚本的其余部分。

intersectBed  -u -a "$1$input_file1" -b "$2$input_file2" | wc -l >outputfile

awk脚本在这里似乎是多余的; wc可以选择只打印行数。另请注意附加引用。)

通过一些重构来修复明显的疣,试试这个:

for i in "$1"/*; do
    input_file1=$i
    NOEXT1=${base1%.*}
    for j in "$2"/*; do
        input_file2=$j
        base2=${j##*/}
        NOEXT2=${base2%.*}

        intersectBed  -u -a "$i" -b "$j" | wc -l >insect_$NOEXT1_$NOEXT2

        #echo $NOEXT1"_VS_"$NOEXT2

        wc -l "$i" "$j"
    done
done
相关问题