이 코드에 조건을 추가하려고 합니다. 예를 들어 문자열 또는 repl[string]에 대한 번역 파일에 null 문자열이 있는 경우 내 파일 input_chk.txt에 다음 세부 정보가 있습니다.
input_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
스크립트를 실행하면 문제가 표시됩니다.
if
8행은 단어 자체가 구문 오류입니다 .- 21행은 단어
1
자체가 구문 오류입니다.
이를 주석 처리하면 6행에 매달린 부분이 있습니다. {
아마도 이것은 3행의 흥미로운 기록 수집 명령문이 결론에서 처리되는 일부 작업 스크립트에서 복사되었을 것입니다.
{
에 접두사를 붙여 스크립트를 수정합니다 END
. 1
21번 줄을 a로 변경하세요 }
.
이제 (적어도) 스크립트는 구문적으로 정확하며 오류가 발생하지 않습니다. 결과는 다음과 같습니다.
#!/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
그러나 그것은 유용하지 않습니다. 그것을 하게 만드는 것저것적어도 하나 이상의 질문이 더 있을 것입니다.