나는 몇 개의 qsub가있는 bash 스크립트를 가지고있다. 그들 각각은 시작하기 전에 preivous qsub가 완료되기를 기다리고 있습니다.내부의 awk
첫 번째 qsub은 특정 디렉토리의 파일을 perl 프로그램으로 보내고 outfiles를 새 디렉토리에 인쇄하는 것으로 구성됩니다. 결국, 나는 모든 직업 이름을 가진 배열을 되풀이한다. 이 스크립트는 의도적으로 작동합니다.
mkdir -p /perl_files_dir
for ID_FILES in `ls Infiles_dir/*.txt`;
do
JOB_ID=`echo "perl perl_scirpt.pl $ID_FILES" | qsub -j oe `
JOB_ID_ARRAY="${JOB_ID_ARRAY}:$JOB_ID"
done
echo $JOB_ID_ARRAY
내 두 번째의 qsub는 새로운 OUTFILE 내 펄 스크립트로 만든 내 모든 이전의 파일을 정렬하고 모든 작업이 depend=afterany
로 (약 100 일)을 완료 한 후에 시작하기위한 것입니다. 다시 말하지만,이 부분은 잘 작동합니다.
SORT_JOB=`echo "sort -m -n perl_files_dir/*.txt >>sorted_file.txt" | qsub -j oe -W depend=afterany$JOB_ID_ARRAY`
SORT_ARRAY="${SORT_ARRAY}:$SORT_JOB"
내 문제는 내 정렬 된 파일에, 나는 (2 6) 제거 할 몇 열을 가지고있다, 그래서 나는 또 다른 depend=afterany
sed
에 파이프
awk
를 사용하여이 마지막 줄에 함께했다
SED=`echo "awk '{\$2="";\$3="";\$4="";\$5="";\$6=""; print \$0}' sorted_file.txt \
| sed 's/ //g' >final_file.txt" | qsub -j oe -W depend=afterany$SORT_ARRAY`
이 마지막 단계는 final_file.txt
을 생성하지만 비워 둡니다. 그렇지 않으면 내게 Command not found
을 줄 것이기 때문에 SED=
을 추가했습니다.
파이프가 없기 때문에 모든 것을 인쇄 할 수있었습니다. 불행히도 아무것도 인쇄하지 않습니다. 내 정렬 된 파일을 열지 않는다고 가정하고 내 sed 후에 내 최종 파일이 비어있는 것입니다. 그것이 사실이라면 왜 awk은 그것을 읽지 않을 것입니까?
내 스크립트에서 올바른 경로로 내 디렉터리와 파일을 정의하기 위해 변수를 사용하고 있습니다. 내 문제는 내 파일 또는 디렉토리를 찾기에 관한 것이 아니라 처음부터 완벽하게 정의되고 스크립트 전반에 걸쳐 사용되기 때문입니다. 나는 변수 대신 전체 경로를 쓰려고 노력했고 같은 결과를 얻었다.
Awk에서 백 슬래시가 표시되지 않습니다. 문제는 실제로''''도 보지 못한다는 것입니다. – Gilles