Como adicionar uma condição dentro de um loop for durante a substituição se string for null

0

Estou tentando adicionar uma condição nesse 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

file.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>

Mas, meu código está exibindo erro na linha 8.Como incluir a condição para que possa imprimir erro se houver uma sequência faltando na primeira coluna ou na segunda coluna.

    
por shome 15.02.2016 / 02:43

1 resposta

2

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á um { pendente 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 . Altere o 1 na linha 21 para um } .

Agora (pelo menos) o script está sintaticamente correto e não fornece 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 útil. Fazer isso que seria pelo menos mais uma pergunta.

    
por 15.02.2016 / 02:53

Tags