このコードに条件を追加しようとしています。たとえば、文字列に空の文字列が含まれているか、翻訳ファイルに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行目にエラーを表示します。最初または2番目の列に文字列がない場合にエラーを印刷できるように条件を含めるにはどうすればよいですか?
ベストアンサー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
しかし、それは目的はありません。それを実現するそれ少なくとも一つの問題が残っています。