한 줄씩 파일을 읽는 간단한 스크립트를 개발 중이며 각 줄의 내용을 평가하고 라인 번호에 따라 라인 데이터를 처리하십시오. 웬일인지, 공백과 일치하는 정규식을 얻을 수 없습니다. [: space :], [[: space :]], [: blank :], \ s, \, 및 "모두 실패했습니다.if satement에서 [[]]로 구분되는 정규 표현식의 공백과 일치하는 배쉬를 얻을 수 없다.
(fastq 형식)은 다음과 같이 내 데이터 포맷:
@SRR573708.2 2 length=100
AAAACGTTAATATTTATTGAAATTGTT
+SRR573708.2 2 length=100
HHHHHHHHHHHHHHHHHHHHHHHHHHH
내가 그것을 다시 포맷하고 싶습니다 :
@SRR573708.2/2
AAAACGTTAATATTTATTGAAATTGTT
+SRR573708.2/2
HHHHHHHHHHHHHHHHHHHHHHHHHHH
내가하기 위해 각 라인을 확인, 그러나 중요하다 새 파일로 인쇄하기 전에 올바르게 형식화되었는지 확인하십시오. 다시 포맷 된 파일을 생성하기위한 마지막 시도는 파일의 끝에 실제 결과를 만들어 냈습니다. 내 코드는 다음과 같습니다 정규식의 경우 문, 바람직 일치하는 유일한 공간과 탭 문자와 줄 바꿈하지를 공백과 일치하는 방법으로
error at line 1
@SRR573708.2 2 length=100
어떤 제안 :
i=1
while read LINE; do
if (($i > 4)); then break; fi
if (($i % 4 == 1)); then
if [[ $data =~ ^@SRR[0-9]{6}[[:blank:]] ]]; then
awk -v IFS=" " -v OFS="" -v ORS="" -v SUFFIX=$SUFFIX -v OUTPUT_FILE=$OUTPUT_FILE ' {print $1,SUFFIX,"\n" } ' <<< $data
i=$(($i + 1))
else
echo -e "error at line ${i}"; echo "${data}"; exit 1; fi
elif (($i % 4 == 2)); then echo -e "$LINE"
i=$(($i + 1))
elif (($i % 4 == 3)); then
echo $data
awk -v IFS=" " -v OFS="" -v ORS="" -v SUFFIX=$SUFFIX -v OUTPUT_FILE=$OUTPUT_FILE ' {print $1,SUFFIX,"\n" } ' <<< $data
i=$(($i + 1))
elif (($i % 4 == 0)); then echo -e "$LINE"
i=$(($i + 1))
else
echo -e "number of liness is not divisible by 4. Program Terminated.\nProblem encountered at line ${i}."
exit 1
fi
done < $INPUT_FILE
내가 오류 메시지가 문자.
당신은 정말 _exactly 하나'[: 빈] []을 찾으시는 것입니까? 아마도 당신은 그 뒤에'*'를 원할 것입니까? 아니면'.'과 일치하지 않는 문제입니까? – kojiro
정규 표현식과 일치하지 않는 이유는'SRR [0-9] {6}'뒤에 공백이 아닌 ".2"가 있기 때문입니다. –
''LINE'을 읽고'$ data'를 검사합니다. 복사 및 붙여 넣기 오류입니까, 아니면 진짜입니까? – rici