이 코드에 조건을 추가하려고 합니다. 예를 들어 문자열에 빈 문자열이 있거나 번역 파일에 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
그러나 그것은 아무 목적도 없습니다. 그것을 실현시키다저것적어도 하나의 문제가 남아 있습니다.