Memory 在shell脚本文件中多次Awking

Memory 在shell脚本文件中多次Awking,memory,awk,size,cluster-computing,slurm,Memory,Awk,Size,Cluster Computing,Slurm,我正在向一个slurm集群发送一个批处理文件,该集群将awks相同填充的字段并附加到输出中。前几行行行得通,但突然间就消失了。它在第二次回声之前就消失了。如果有人能调试或向我展示一个更好的脚本,那就太好了,但我想知道为什么或者当bash文件一遍又一遍地执行相同的工作时,它是否会崩溃 #!/bin/bash #SBATCH -A b2014091 #SBATCH -p core #SBATCH -n 1 #SBATCH -t 23:00:00 #SBATCH -J sbatch #input w

我正在向一个slurm集群发送一个批处理文件,该集群将awks相同填充的字段并附加到输出中。前几行行行得通,但突然间就消失了。它在第二次回声之前就消失了。如果有人能调试或向我展示一个更好的脚本,那就太好了,但我想知道为什么或者当bash文件一遍又一遍地执行相同的工作时,它是否会崩溃

#!/bin/bash
#SBATCH -A b2014091
#SBATCH -p core
#SBATCH -n 1
#SBATCH -t 23:00:00
#SBATCH -J sbatch

#input was MK...vcf

input=$1

output=$(grep -v '^#' ${input} | awk '(substr($12,1,3)=="1/1") && (substr($15,1,3)=="1/1") {print $0}')
echo "$output\n" >> /proj/b2014091/nobackup/potHomoF1.txt
output=$(grep -v '^#' ${input} | awk '(substr($12,1,3)=="0/0") && (substr($15,1,3)=="0/0") {print $0}')
echo "$output\n" >> /proj/b2014091/nobackup/potHomoF1.txt
output=$(grep -v '^#' ${input} | awk '(substr($12,1,3)=="1/1") && (substr($15,1,3)=="./.") {print $0}')
echo "$output\n" >> /proj/b2014091/nobackup/potHomoF1.txt
output=$(grep -v '^#' ${input} | awk '(substr($12,1,3)=="./.") && (substr($15,1,3)=="1/1") {print $0}')
echo "$output\n" >> /proj/b2014091/nobackup/potHomoF1.txt
output=$(grep -v '^#' ${input} | awk '(substr($12,1,3)=="0/0") && (substr($15,1,3)=="./.") {print $0}')
echo "$output\n" >> /proj/b2014091/nobackup/potHomoF1.txt
output=$(grep -v '^#' ${input} | awk '(substr($12,1,3)=="./.") && (substr($15,1,3)=="0/0") {print $0}')
echo "$output\n" >> /proj/b2014091/nobackup/potHomoF1.txt
错误消息:

slurmstepd:获取\u退出\u代码任务0被信号终止

字段12-15的示例:

1/1:0,38:38:99:1149,114,0       1/1:0,39:39:99:1161,117,0       1/1:0,46:46:99:1383,138,0       0/1:21,18:39:99:413,0,524 

也许你可以改变这一切:

input=$1

output=$(grep -v '^#' ${input} | awk '(substr($12,1,3)=="1/1") && (substr($15,1,3)=="1/1") {print $0}')
echo "$output\n" >> /proj/b2014091/nobackup/potHomoF1.txt
output=$(grep -v '^#' ${input} | awk '(substr($12,1,3)=="0/0") && (substr($15,1,3)=="0/0") {print $0}')
echo "$output\n" >> /proj/b2014091/nobackup/potHomoF1.txt
output=$(grep -v '^#' ${input} | awk '(substr($12,1,3)=="1/1") && (substr($15,1,3)=="./.") {print $0}')
echo "$output\n" >> /proj/b2014091/nobackup/potHomoF1.txt
output=$(grep -v '^#' ${input} | awk '(substr($12,1,3)=="./.") && (substr($15,1,3)=="1/1") {print $0}')
echo "$output\n" >> /proj/b2014091/nobackup/potHomoF1.txt
output=$(grep -v '^#' ${input} | awk '(substr($12,1,3)=="0/0") && (substr($15,1,3)=="./.") {print $0}')
echo "$output\n" >> /proj/b2014091/nobackup/potHomoF1.txt
output=$(grep -v '^#' ${input} | awk '(substr($12,1,3)=="./.") && (substr($15,1,3)=="0/0") {print $0}')
echo "$output\n" >> /proj/b2014091/nobackup/potHomoF1.txt
这个

awk '!/^#/ && substr($12,1,3)~/[01.]\/[01.]/ && substr($15,1,3)~/[01.]\/[01.]/' <<< $1 > /proj/b2014091/nobackup/potHomoF1.txt


当它失败时,错误消息是什么?您能给出一个从中获取子字符串的示例吗?这不包括我正在避免的字符串之一的0/1吗?可能类似于/\[01.]\/\1/是的。我可能认为你必须把它分开,但你仍然可以在一个awk中完成所有的工作。试试这个awk’!/^/&&substr$12,1,3~/1\/1\/0\/0\/\./&&substr$15,1,3~/1\/1\/0\/0\/\./'什么都没有发生,什么都没有。一分钟后完成,输出为空,没有错误消息。我不希望$12==1/1&&&$15==0/0,因为我认为这会给我。
awk '{a=substr($12,1,3);b=substr($15,1,3)} !/^#/ && ((a=="1/1" && b=="1/1") || (a=="0/0" && b=="0/0") || (a=="1/1" && b=="./.") || (a=="./." && b=="1/1") || (a=="0/0" && b=="./.") || (a=="./." && b=="0/0"))' $1 > /proj/b2014091/nobackup/potHomoF1.txt
input=$1
awk '{a=substr($12,1,3);b=substr($15,1,3)} !/^#/ && ((a=="1/1" && b=="1/1") || (a=="0/0" && b=="0/0") || (a=="1/1" && b=="./.") || (a=="./." && b=="1/1") || (a=="0/0" && b=="./.") || (a=="./." && b=="0/0"))' ${input} > /proj/b2014091/nobackup/potHomoF1.txt