这是我的代码的一部分:
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}},输出
答案 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