문자열이 비어 있는 경우 교체 중에 for 루프에 조건을 추가하는 방법

문자열이 비어 있는 경우 교체 중에 for 루프에 조건을 추가하는 방법

이 코드에 조건을 추가하려고 합니다. 예를 들어 문자열에 빈 문자열이 있거나 번역 파일에 repl[string]이 있는 경우 내 파일 input_chk.txt에는 다음 세부 정보가 있습니다.

Enter_chk.txt

b73_chr10   w22_chr2
w22_chr7    w22_chr10
w22_chr8

암호:

#!/usr/bin/awk -f
# Collect the translations from the first file.
NR==FNR { repl[$1]=$2; next }

# Step through the input file, replacing as required.
{
if 
for ( string in repl ) {
if (length(string)==0)
{
    echo "error"
}
else
{
sub(string, repl[string])
}
}
#if string is null-character,then we have to add rules,
#if repl[string] is null-character,then we have to delete rules or put # in front of all lines until we reach </rules> also
# And print.
1

# to run this script as $ ./bash_script.sh input_chk.txt file.conf

파일.conf

<rules>
<rule>
condition =between(b73_chr10,w22_chr1)
color = ylgn-9-seq-7
flow=continue
z=9
</rule>
<rule>
condition =between(w22_chr7,w22_chr2)
color = blue
flow=continue
z=10
</rule>
<rule>
condition =between(w22_chr8,w22_chr3)
color = vvdblue
flow=continue
z=11
</rule>
</rules>

그러나 내 코드는 8행에 오류를 표시합니다. 첫 번째 또는 두 번째 열에 문자열이 누락된 경우 오류를 인쇄할 수 있도록 조건을 포함하려면 어떻게 해야 합니까?

답변1

스크립트를 실행하고 문제를 찾으십시오.

  • 8행은 문법 오류입니다. 단어 if자체는 1입니다.
  • 21행은 문법 오류이고, 단어 1자체도 문법 오류입니다.

이것을 주석으로 처리하면 6행에 매달린 내용이 있습니다. {아마도 이것은 3행의 흥미로운 레코드 수집 명령문이 결론에서 처리되는 작업 스크립트에서 복사되었을 수 있습니다.

{접두사를 추가하여 스크립트를 수정했습니다 END. 21번째 줄을 1로 변경하세요 }.

이제 (적어도) 스크립트는 구문적으로 정확하고 오류가 없습니다. 결과는 다음과 같습니다.

#!/usr/bin/awk -f
# Collect the translations from the first file.
NR==FNR { repl[$1]=$2; next }

# Step through the input file, replacing as required.
END {
#if 
for ( string in repl ) {
if (length(string)==0)
{
    echo "error"
}
else
{
sub(string, repl[string])
}
}
#if string is null-character,then we have to add rules,
#if repl[string] is null-character,then we have to delete rules or put # in front of all lines until we reach </rules> also
# And print.
}

# to run this script as $ ./bash_script.sh input_chk.txt file.conf

그러나 그것은 아무 목적도 없습니다. 그것을 실현시키다저것적어도 하나의 문제가 남아 있습니다.

관련 정보