Estou tentando adicionar uma condição neste código, que se houver uma string nula no arquivo de tradução para string ou repl[string], por exemplo, meu arquivo input_chk.txt terá os seguintes detalhes:
input_chk.txt
b73_chr10 w22_chr2
w22_chr7 w22_chr10
w22_chr8
Código:
#!/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
arquivo.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>
Porém, meu código está apresentando erro na linha 8. Como incluir a condição para que possa imprimir erro se houver uma string faltando na primeira ou na segunda coluna.
Responder1
A execução do script mostra os problemas:
- A linha 8 é um erro de sintaxe, a palavra
if
por si só. - A linha 21 é um erro de sintaxe, a palavra
1
por si só.
Comentando isso, há uma dúvida {
na linha 6. Talvez isso tenha sido copiado de algum script de trabalho, onde a interessante declaração de coleta de registros na linha 3 é processada na conclusão.
Corrija o script prefixando o {
com END
. Mude a 1
linha 21 para a }
.
Agora (pelo menos) o script está sintaticamente correto e não apresenta erros. O resultado é assim:
#!/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
No entanto, não faz nada de útil. Fazendo isso acontecerqueseria pelo menos mais uma pergunta.